实验13 TLC5620(DA)控制.doc_第1页
实验13 TLC5620(DA)控制.doc_第2页
实验13 TLC5620(DA)控制.doc_第3页
实验13 TLC5620(DA)控制.doc_第4页
实验13 TLC5620(DA)控制.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EDA实验 实验13 TLC5620(DA)控制 姓 名: 张战战 学 号: 0910435 指导教师: 司敏山 实验十三TLC5620(D/A)控制 1. 实验目的 1 掌握数/模转换芯片TLC5620的使用方法。2 掌握利用有限状态机实现一般时序逻辑分析的方法。3 掌握一般状态机的设计与应用。2. 实验原理TLC5620封装如实验图13-1所示,是一个4通道8位的串行数模(D/A)转换器,其最大转换速度可达1MBps。其管脚REFAREFD为四个通道的参考电压,实验平台的参考电压均为2.5V;DACADACD为4路四个模拟信号输出通道;DATA为串行数据输入;CLK为DAC串行数据输入时钟,其下降沿锁存输入数据DATA;LOAD为串行数据锁存信号,低电平锁存。LDAC为DAC输出更新控制信号,当LDAC为低电平时,则把锁存在锁存器的数据送到DAC并转换为模拟信号,在相应的通道进行输出,故可以始终把LDAC信号置为低电平,也就是说加载信号一旦产生,数据立刻转换输出。 实验图13-1 TLC5620封装示意图因为TLC5620为四通道的数模转换器,只有一个DATA数据输入端,所以传送的数据中要包含通道的信息,以便DAC能识别出该数据属于哪个通道,转换完成后的模拟信号输出到相应的通道中。TLC5620传输的一帧数据位11位,先传送高位,最后传送低位,帧格式如实验表13.1所示。实验表13-1 TLC5620的数据结构D10D9D8D7D6D5D4D3D2D1D0通道选择输出模式RNG8位数据D7D0D10、D9为通道选择位,“00”“11”分别选择DACADACD通道。RNG的数值为0或者1,为输出倍数。TLC5620的输出电压为: 简单的说,DAC内部有移位寄存器和锁存器,我们要在工程中实现在LOAD高电平时把11位数据在CLK的下降沿逐位(由低位到高位)发送到DAC得DATA端,发送完毕后,LOAD置为高电平,指示DAC进行模数转换。TLC5620的访问时序图如实验图13-2所示。实验图13-2 TLC5620访问时序图需要注意的是LOAD的低电平的最小保持时间(LOAD)为250ns,各个和的最小保持时间为50ns。为了尽可能最大利用DAC的转换速度,为此我们状态机选用16MHz(62ns)左右的输入时钟,在LOAD低电平时要等待5个状态机时钟CLK16M。为此我们采用计数器判断等待时间是否满足条件,该计数器使用LOAD的高电平为异步复位信号,低电平时,对CLK16M进行计数,当计数器计数值大于5时,说明LOAD为低电平的时间(LOAD)已满足,状态机可跳转到下一态。在LOAD的高电平时,需要产生11个DAC的CLK,同样采用计数器计数值得判断,该计数器中,LOAD的低电平为异步复位信号,LOAD为高电平时,对DA_CLK计数,满足计数器的计数值11时,说明已经送入了11bit的串行数据,可以进行置LOAD为低电平,对11bit数据锁存进行数模转换。DAC状态机控制仿真文件结果图如实验图13-3所示。实验图13-3 DAC状态机控制仿真文件结果图从实验图可知,chan_sel选择D通道,RNG为低电平,待转换的8位二进制数为“10101010”,这样TLC5620的帧数据结构“11010101010”,可以看到在da_clk的下降沿,模块给DAC的DATA端传送的数据顺序和帧数据结构相同。且da_load端的低电平时间为6个clk16M周期。TLC5620数模转换顶层原理图如下:实验图13-4 TLC5620数模转换顶层原理图正弦信号查表模块romsin所含的sin.mif文件中数据:实验表13-2 sin.mif文件3. 实验步骤1 新建工程dled新建工程文件夹,在该文件夹下新建工程tlc549。2 编写低层HDL文件很据原理实验图13-4的内容,编写各个功能模块的HDL文件其中romsin模块是一个正弦信号产生的查表模块。也可以使用按键作为时钟信号的8位计数器生成一个q7.0的8位数据。3 编写顶层原理图文件新建原理图文件,并添加各个模块。设定为顶层文件,进行编译,如有错误,纠正直至成功为止。4 锁定管脚5 下载下载后,用示波器观察DA输出结果是否为正弦波信号。因实验箱的DA输出对地接了电容,故信号衰减严重。实验结果:用示波器测DACD输出信号,可观察到一个正弦信号。4. 实验参考程序程序清单:-dac.VHDL-LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY dac ISPORT(clk16M: IN STD_LOGIC; -系统时钟chan_sel:IN STD_LOGIC_VECTOR(1 DOWNTO 0);rng: IN STD_LOGIC;data_in: IN STD_LOGIC_VECTOR(7 DOWNTO 0);da_clk: OUT STD_LOGIC;da_ldac: OUT STD_LOGIC;da_load: OUT STD_LOGIC;da_data: OUT STD_LOGIC);END;ARCHITECTURE ONE OF dac ISSIGNAL cnt_load:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL cnt_da_clk:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL data_reg:STD_LOGIC_VECTOR(11 DOWNTO 0);SIGNAL da_clk_r,da_load_r:STD_LOGIC;TYPE states IS(st0,st1,st2,st3,st4);SIGNAL c_state,n_state:states;BEGINda_clk = da_clk_r;da_load = da_load_r;da_data = data_reg(11);da_ldac = 0;PROCESS(clk16M)BEGINIF RISING_EDGE(clk16M) THEN c_state = n_state;END IF;END PROCESS;PROCESS(clk16M,da_load_r)BEGINIF da_load_r = 1 THEN -da_load为高电平,计数器复位cnt_load = 000;ELSIF FALLING_EDGE(clk16M) THENIF cnt_load 111 THEN cnt_load = cnt_load + 1; -计数da_load的时间宽度ELSE cnt_load = cnt_load;END IF;END IF;END PROCESS;PROCESS(da_load_r,da_clk_r)BEGINIF da_load_r = 0 THEN -da_load低电平cnt_da_clk = 0000; -计数器复位data_reg = 0& chan_sel & rng & data_in; -加载带传送数据ELSIF RISING_EDGE(da_clk_r) THEN -da_clk下降沿?cnt_da_clk = cnt_da_clk + 1;data_reg -初始状态da_load_r = 1;da_clk_r = 0;n_state da_load_r = 0;da_clk_r 101 THEN -tw(LOAD)的宽度满足要求n_state = st2;ELSE n_state da_load_r = 1;da_clk_r 1011 THEN -已传送11bit的 数据n_state = st0;ELSEn_state da_load_r = 1;da_clk_r = 1; -da_clk上升沿n_state n_state = st0;END CASE;END PROCESS;END;-INT_DIV.VHDL-LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY INT_DIV ISGENERIC(F_DIV:INTEGER:=5;-此处定义了一个默认值5,即电路为5 -分频电路 F_DIV_WIDTH:INTEGER:=3);-此处定义了一个默认值3,即电路为3位的 -计数器电路PORT(CLOCKIN:IN STD_LOGIC; CNT:OUT STD_LOGIC_VECTOR(F_DIV_WIDTH-1 DOWNTO 0); CLOCKOUT:OUT STD_LOGIC; T1:OUT STD_LOGIC; T2:OUT STD_LOGIC);END;ARCHITECTURE Devider OF INT_DIV ISSIGNAL COUNTER:STD_LOGIC_VECTOR(F_DIV_WIDTH-1 DOWNTO 0);SIGNAL TEMP1,TEMP2:STD_LOGIC;BEGINPROCESS(CLOCKIN)BEGINIF RISING_EDGE(CLOCKIN) THEN IF COUNTER = F_DIV - 1 THENCOUNTER 0);TEMP1 = NOT TEMP1;ELS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论