EDA作业课案.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EDA作业课案

信号发生器设计 1.设计原理 结构框图:根据设计要求,构造信号发生器的结构框图。 分频网络: 根据已有时钟信号的频率、实际产生信号的频率以及D/A转换器时钟频率的需求,决定分频网络分频系数的设计。 信号产生: 用计数器直接产生波形信号输出,或者采用查找表方式产生波形信号,用计数器产生存储器的地址,在存储器中存放波形信号输出的数据。 信号控制: 控制模块可以用数据选择器实现,用6选1数据选择器实现对6种信号的选择。 D/A控制器: 按照D/A转换器的时序要求,D/A控制器产生D/A转换器的控制信号,将波形数据经过D/A控制器送入D/A转换器,将数字信号转换为模拟信号,产生模拟信号输出。D/A转换器TLC7528是2路、8位的数字/模拟转换器,通过运放NE5532实现电流电压转换,模拟信号分别从J1,J2和VGA输出,其内部包含两个数据锁存器,通过数据输入端DB0~DB7传送,控制输入端决定数据存入哪个数据锁存器。 通过状态机实现FPGA对TLC7528的控制,按要求依次输出控制信号。FPGA的dac输出信号与TLC7528的相连,FPGA的data输出信号与TLC7528的数据输入端相连,FPGA的cs和wr输出信号分别与TLC7528的CS和WR相连。 信号产生: 递增锯齿波利用计数器产生递增锯齿波信号。设计复位信号reset使输出清零,高电平有效;reset为低电平时,在输入时钟信号clk的作用下,设计一个8位二进制加法计数器,输出信号依次从全0变为全1,计为全1后恢复为全0,不断循环,从而产生递增锯齿波信号输出。 正弦波信号利用ROM产生正弦波信号。首先用计数器产生存储器的地址,接着读取存放在存储器中的正弦波信号数据。 2.实现过程 信号发生器的设计:采用混合描述的层次化设计方案,在调用这些子模块,采用原理图方式实现信号发生器的系统电路连接。 子模块的设计有: a.递减锯齿波signal2的设计实现 b. 三角波signal3的设计实现 c. 阶梯波signal4的设计实现 d. 方波信号signal5的设计实现 e.正弦信号signal6的设计实现 f.数据选择器mux61设计实现: 数据选择器的选择端信号sel[2..0]共3位,数据端共6组,每组信号均是8位,分别是d1[7..0]、…、d7[7..0],输出信号q[7..0]。 g.分频网络设计实现:利用二进制计数器的分频实现。通过将计数器状态输出端的信号引出,即可得到不同的频率信号。 3.顶层原理图 连接三个模块电路:信号发生器电路signal7、分频网络fclk以及DAC控制模块dac_control连接在一起, 将FPGA的输出信号cs、wr、dac_ac和data[7..0]与TLC7528对应引脚相连,将程序下载到目标芯片中,用示波器观察输出波形,若运行结果正确,可以实现各种波形的选择输出。 电路signal7是将递增锯齿波信号模块signal1、递减锯齿波信号模块signal2、三角波信号模块signal3、阶梯波信号模块signal4、方波信号模块signal5、正弦信号模块signal6和数据选择器mux61电路连接形成。 4.子程序 递增锯齿波信号signal1的程序: library ieee ; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity signal1 is --产生递增锯齿波模块signal1 port(clk,reset:in std_logic; --复位信号reset,时钟信号clk q:out std_logic_vector(7 downto 0));--输出信号q,8位数字信号 end signal1; architecture a of signal1 is begin process(clk,reset) variable tmp:std_logic_vector(7 downto 0); begin if reset=1 then --复位信号reset=1有效,启始状态 tmp: elsif rising_edge(clk)then --复位信号无效,时钟信号有上升沿 if tmp then --计数值全1,恢复到全0状态 tmp: else tmp:=tmp+1; --加法计数 end if; end if; q=tmp; --信号输出,产生递增锯齿波信号 end process; end a; 递减锯齿波signal2的程序: library ieee; use ieee.std_logic_1164.all;

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档