陈冲EDA课程设计_任意波形信号发生器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
陈冲EDA课程设计_任意波形信号发生器任
意
波
形
信
号
发
生
器
姓名: 陈冲
班级: 07通信工程
指导老师:孙惠章
1
目录
一.简述 (3)
二.设计性能要求 (3)
三.系统框图 (3)
四.系统电路图 (3)
五.基本工作原理 (4)
六. 单元电路模块源程序及功能 (5)
七.系统仿真波形 (10)
八.引脚锁定 (11)
九. 实验结果及硬件验证 (11)
十(实验心得 (13)
2
任意波形信号发生器的设计
一.简述
随着信息科技的发展~波形发生器在科技社会等多个领域发挥着越来越重要作用。采用eda技术利用quartus60软件平台~基于大规模可编程逻辑器件 fpga 设计的多功能波形发生器系统~大大简化其结构 , 降低成本 , 提高了系统的可靠性和灵活性。设计中运用计数器~数据选择器~对所需的频率进行选择和同步。使用宏功能模块存储波形。然后多波形进行幅度的选择。产生满足需要的不用频率和幅度的波形。
二(设计性能要求
1.能输出正弦波~锯齿波~阶梯波~三角波~方波~矩形脉冲等八种波形。
2.具有幅度和频率的调整。
3.单元电路模块使用VHDL语言编写。
三.系统框图
图1.任意波形信号发生器系统框图
四(系统电路图
3
图2.任意波形信号发生器系统电路图
五(基本工作原理
将要产生的波形数据存入波形存储器中, 然后在参考脉冲的作用下, 对输入的频率数据进行累加, 并将累加器输出的一部分作为读取波形存储器的地址, 将读出的波形数据经D/A 转换为相应的电压信号,D/A 转换器输出的一系列的阶梯电压信号经低通滤波器滤波后便输出了光滑的合成波形的信号。
选择八种基础波形为设计与实现的对象~而八个波形作为同一个任意波形发生器里的四个部分~是有着同一个输入与输出~因此在设计上还需要对波形进行选择与控制的部分~通过对时钟脉冲输入的选择~使得八个波形模块只有一个输入为时钟脉冲~其他三个模块则输入始终为0。在波形输出时~设计一个模块控制输出的波形是所要求输出的波形~在时钟脉冲选择与输出波形选择两模块之间。
对于频率的选择可以选择分频器~同时也可以选择计数器~本实验采用的是计数器以实现分频的效果~输出分别为二分频~四分频~八分频~十六分频用以实现不同的频率。幅度调节可以使用lpm_divide~可以实现八种不同的幅度调节。
4
六(单元电路模块源程序及功能
1. 分频模块
以下为分频模块(CT74161)的VHDL语言编程源程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CT74161 IS
PORT(clk : IN STD_LOGIC; clk_div2 : OUT STD_LOGIC; clk_div4 : OUT STD_LOGIC; clk_div8 : OUT STD_LOGIC; clk_div16 : OUT STD_LOGIC); END CT74161;
ARCHITECTURE rtl OF CT74161 IS SIGNAL count : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS(clk)
BEGIN
IF (clk'EVENT AND clk='1') THEN IF(count="1111") THEN
Count <= (OTHERS =>'0'); ELSE
Count <= count +1;
END IF ;
END IF ;
END PROCESS;
clk_div2 <= count(0);
clk_div4 <= count(1);
clk_div8 <= count(2);
clk_div16 <= count(3);
END rtl;
在Quartus II 6.0下得到的电路模块图形和软件仿真数据:
5
2. 频率选择模块
以下为频率选择模块(tiaopin)的VHDL语言编程源程序 library ieee; use ieee.std_logic_1164.all; entity tiaopin is
port(s1,s0: in std_logic;
a,b,c,d: in std_logic;
y: out std_logic); end tiaopin;
architecture one of tiaopin is
signal s: std_logic_vector(1 downto 0);
signal y_temp: std_logic;
begin
s<=s1&s0;
process(s1,s0,a,b,c,d)
begin
case s is
when "00"=>y_temp<=a;
when "01"=>y_temp<=b;
when "10"=>y_temp<=c;
when "11"=>y_temp<=d;
when others=>y<='X';
end case;
end process;
y<=y_temp;
end one;
在Quartus II 6.0下得到的电路模块图形:
6
3. 波形选择模块
以下为波形选择模块(decoder)的VHDL语言编程源程序library ieee;
use ieee.std_logic_1164.all;
entity DECODER is
port(a0,a1,a2,s0,s1,s2:in std_logic;
y0,y1,y2,y3,y4,y5,y6,y7:out std_logic);
end DECODER;