1、EDA课程设计报告 课程:EDA技术实用教程 学院:电子与信息工程学院 班级: 姓名: 学号: 教师: 完成日期:2013.01.02 目录实验一、3-8译码器的仿真5实验二、2选一多路选择器8实验三、十进制计数器10实验四、四选一多路选择器14实验五、ADC0809采样状态机20实验六、11010011序列检测23实验七、两个8位乘8位的有符号数乘法器25实验八、全加器27实验九、LPM_COUNTER计数模块29实验十、LPM_COUNTER计数模块例化31实验十一、LPM随机存储器的设置和调用33实验十二、LPM_ROM的定制和使36实验十三、FIFO定制38实验十四、LPM嵌入式锁相环
2、调用39实验十五、NCO核数控振荡器使用方法40实验十六、使用 IP CORE设计FIR滤波器42实验十七、数字时钟43实验十八、交通灯47实验一、3-8译码器的仿真一:实验名称:3-8译码器仿真二:实验要求:熟悉对max+plus10.0的使用,并且能简单的使用进行3-8译码器的仿真和论证。三:实验步骤:1:使用max+plus10.0软件,设计3-8译码器的实验原理图如下所示:图1 实验原理图2:波形的仿真与分析启动max+plus10.0Waveform editor菜单,进入波形编辑窗口,选择欲仿真的所有IO管脚。如下图所示:图2 波形编辑为输入端口添加激励波形,使用时钟信号。选择初始
3、电平为“0”,时钟周期倍数为“1”。添加完后,波形图如下所示:图3 添加激励后的波形打开max+plus10.0Simulator菜单,确定仿真时间,单击Start开始仿真,如下图所示:图4 仿真过程图5 仿真结果四:实验结论:使用max+plus10.0能很好的完成很多电路的仿真与工作。实验二、2选一多路选择器一、原理图设计输入法图一 2选1多路选择器结构体 图二 电路编译结果图三 波形仿真由波形图可知:当a、b两个输入口分别输入不同频率信号时,针对选通控制端s上所加的不同电平,输出端y将有对应不同信号输出。例如当s为低电平时,y口输出了来自a端的较高频率的时钟信号;反之,即当s为高电平时,
4、y口输出了来自b端的较低频率的时钟信号。二、文本设计输入(VHDL)法图四 2选1多路选择器(VHDL)图五 2选1多路选择器(VHDL)波形图图六 2选1多路选择器(VHDL)引脚分布图实验三、十进制计数器一、VHDL程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_UNSIGNED.all;entity CNT10 isport (CLK,RST,EN,LOAD: IN STD_LOGIC; DATA: IN STD_LOGIC_VECTOR(3 DOwNTO 0); DOUT: out std_logic_vect
5、or(3 DOWNTO 0); COUT: OUT STD_LOGIC);ENd entity CNT10;ARCHITECTURE behav of CNT10 ISBEGINPROCESS (CLK,RST,EN,LOAD)variable Q: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST=0 THEN Q:= (OTHERS=0);ELSIF CLK EVENT AND CLK =1 THENIF EN=1 THENIF (LOAD =0) THEN Q:=DATA; ELSEIF Q0);END IF;END IF;END IF;END IF;IF
6、 Q=1001 THEN COUT=1;else COUT=0; END IF;DOUT =Q;END PROCESS;END behav;它是一个带有异步复位和同步加载功能的十进制加法计数器。 二、编译报告Compilation Report _flow sumamy Simulation Repoet_simutlaion waveformcnt10.vwf由图可知,(1)当计数使能EN为高电平时允许计数;RST低电平时计数器被清零。(2)由于LOAD是同步加载控制信号,其第一个负脉冲恰好在CLK的上升沿处,故将5加载于计数到9,出现了第一个进位脉冲。由于LOAD第二个负脉冲未在CLK上升
7、沿处,故没有发生加载操作,而第3、4个负脉冲都出现了加载操作;(3)当计数器每次计到9时,输出为高电平,而且计数器又从0开始重新计数三、RTL图四、symbol cnt10.bdf实验四、四选一多路选择器一、用IF_THEN语句实现4选1多路选择器图一 用IF_THEN语句实现4选1多路选择器文本设计输入图二 程序运行编译结果图三 四选一多路选择器的电路仿真波形图由上图可知: 当sel=11时,y=intput3;当sel=10时,y=intput2;当sel=01时,y=intput1;当sel=00时,y=intput0;实现了四选一功能。 图四4选1多路选择器RTL电路图图五 4选1多路
8、选择器Symbol二、用CASE语句实现4选1多路选择器图六 用CASE语句实现4选1多路选择器文本设计输入图七 程序运行编译结果图八 四选一多路选择器的电路仿真波形图由上图可知(s=s1&s2): 当s=00时,z=a;当s=01时,z=b;当s=10时,z=c;当s=11时,z=d;实现了四选一功能。图九 4选1多路选择器RTL电路图图十 4选1多路选择器Symbol三、用WHEN_ELSE语句实现4选1多路选择器图十一 用WHEN_ELSE语句实现4选1多路选择器文本设计输入图十二 四选一多路选择器的电路仿真波形图由上图可知(sel=b & a): 当sel=00时,q=i0;当sel=
9、01时,q=i1;当sel=10时,q=i2;当sel=11时,q=i3;实现了四选一功能。图十三 4选1多路选择器RTL电路图实验五、ADC0809采样状态机一、文本设计输入(VHDL)法图一 ADC0809采样状态机文本设计输入图二 程序运行编译结果二、RTL电路图图三 ADC0809采样状态机RTL电路图三、ADC0809采样状态图图四 ADC0809采样状态图四、ADC0809采样状态机工作时序图五 ADC0809采样状态机工作时序图上图显示了一个完整的采样周期。复位信号后进入状态s0;第二个时钟上升沿后,状态机进入状态s1,由start、ale发出采样和地址选通的控制信号。而后,eo
10、c由高电平变为低电平,ADC0809的8位数据输出端呈现高阻状态“ZZ”。在状态s2,等待了clk的数个时钟周期之后,eoc变为高电平,表示转换结束;进入状态s3,在此状态的输出允许oe被被设置成高电平。此时ADC0809的数据输出端d7. 0即输出已经转换好的数据5EH。在状态s4,lock_t发出一个脉冲,其上升沿立即将d端口的5E锁入q和regl中。图六 ADC0809采样状态机Symbol实验六、11010011序列检测一、文本设计输入(VHDL)法图一 序列检测器文本设计输入图二 程序运行编译结果二、序列检测器RTL电路图图三 序列检测器RTL电路图三、序列检测器状态图图四 序列检测
11、器状态图四、序列检测器时序仿真波形图五 序列检测器时序仿真波形由上图可知,当有正确序列进入时,到了状态8时,输出序列正确标志SOUT=1。而当下一位数据为零时,即DIN=0,进入状态四s3(这时测出的数据110恰好与原序列数的头三位相同)。图六 序列检测器Symbol实验七、两个8位乘8位的有符号数乘法器一、文本设计输入(VHDL)法图一 两个8位乘8位的有符号数乘法器文本设计输入图二 程序运行编译结果图三 仿真波形由波形可知,在CLK的第4个上升沿后才得到第一个计算数据,之前都是0。第4个上升沿后得到的结果为s=00+2315=345;第5个上升沿后得到结果为s=2315+1122=587;
12、第6个上升沿后得到结果为s=1122+3345=1727;第7个上升沿后得到结果为s=3345+1621=1821;第8个上升沿后得到结果为s=1621+165=416;第9个上升沿后得到结果为s=165+1121=311;二、两个8位乘8位的有符号数乘法器Symbol图四 两个8位乘8位的有符号数乘法器Symbol三、两个8位乘8位的有符号数乘法器RTL电路图 图五两个8位乘8位的有符号数乘法器RTL电路图实验八、全加器一、文本设计输入(VHDL)法图一 全加器文本设计输入图二 仿真结果图三 全加器波形仿真图全加器真值表如下:AINBINCINCOUNTSUM0000000101010010
13、111010001101101101011111对比真值表和仿真波形,加数AIN,BIN和进位CIN共有8总情况,和SUM和进位COUNT共有4总情况,波形和真值表一致图四 全加器波实体模块图五 全加器F_adder电路图实验九、LPM_COUNTER计数模块一、文本设计输入(VHDL)法图一 LPM_COUNTER计数模块文本设计输入图二 程序运行编译结果图三 LPM_COUNTER计数模块 图四 LPM_COUNTER计数模块Symbol二、LPM_COUNTER计数模块RTL电路图图五 LPM_COUNTER计数模块RTL电路图实验十、LPM_COUNTER计数模块例化一、文本设计输入(
14、VHDL)法图一 LPM_COUNTER计数模块例化文本设计输入图二程序运行编译结果二、CNT4BIT.V仿真波形图三 CNT4BIT.V的仿真波形由仿真波形图可知:在第2个SLD加载信号在没有CLK上升沿处发生时,无法进行加载,显然SLD是同步的。从波形中可以了解此计数器模块的功能和性能。图五 CNT4BIT计数模块Symbol图四 CNT4BIT原理图输入设计二、CNT4BIT计数模块RTL电路图 图六 CNT4BIT计数模块RTL电路图实验十一、LPM随机存储器的设置和调用一、建立MIF格式文件图一 MIF文件编辑窗图二 利用康芯MIF生成MIF正弦波数据文件二、对LPM_RAM仿真测试
15、图三 在原理图编辑器上连接好的RAM模块图四 RAM仿真波形三、利用用户自定义数据类型语句来实现存储器描述图五 存储器VHDL程序图六 仿真结果图七 波形仿真结果图八 存储器RTL电路图图九 存储器Symbol实验十二、LPM_ROM的定制和使一、正弦信号发生器源程序图一 正弦信号发生器源程序图二 仿真结果图三 LPM_ROM仿真测试图四 正弦信号发生器RTL电路图图五 正弦信号发生器仿真波形由波形可见,随着每一个时钟上升沿的到来,输出端口将正弦波数据依次输出,输出的数据与加载数据相符。图六 正弦信号发生器Symbol实验十三、FIFO定制一、FIFO电路原理图图一 FIFO电路原理图此FIF
16、O的数据位宽为8,深度为256。其中data7.0为数据输入口;q7.0为数据输出口;wrreq和rderq分别为数据写入和读出请求信号,高电平有效;aclr为异步清零;full为存储数据溢出指示信号;empty为FIFO空指示信号;usedw7.0为当前已使用地址数指示;选择了速度优化方式。图二 FIFO的仿真波形从波形中可以看出,当写入请求wrreq为高电平时,在clock的每一个上升沿将data上的数据写入FIFO中;而在wrreq为低电平和读出请求rdreq为高电平时,clock的每一个上升沿,按照先进先出的顺序将FIFO中存入的数据读出,在这个过程中,usedw7.0的数据也随之变化
17、。实验十四、LPM嵌入式锁相环调用一、采用嵌入式锁相环作时钟的正弦信号发生器电路图图一 电路原理图图二 选择输入参考时钟inclk0为10MHZ实验十五、NCO核数控振荡器使用方法一、NCO核数控振荡器使用方法图二 设置NCO参数图一 开始进入Core文件生成选择窗口图三 完成NCO参数设置并生成设计文件后的信息窗口图四 设置NCO参数图五 测试NCO的电路实验十六、使用 IP CORE设计FIR滤波器一、使用IP Core设计FIR滤波器图一 FIR滤波器系数确定图二 测试电路图实验十七、数字时钟一、文本设计输入(VHDL)法图一 仿真结果图二 数字时钟电路原理图图三 数字时钟实体模块二、数字时钟seccount模块-秒计时图四 全加器数字时钟seccount模块-秒计时图五 秒计数波形仿真图图六 分计数波形仿真图实验十八、交通灯一、文本设计输入(VHDL)法图一 交通灯程序文本设计输入图二 仿真结果图三 交通灯仿真波形图四 交通灯RTL图图五 交通灯symbol49