《数字系统设计》实验报告
- 格式:docx
- 大小:1.05 MB
- 文档页数:10
》数字系统设计与PLD应用实验报告****************实验一、高速并行乘法器的设计一、算法设计和结构选择本高速并行乘法器采用一下算法:被乘数A的数值位左移,它和乘数B的各个数值位所对应的部分进行累加运算。
且用与门、4位加法器来实现,其电路结构如下图一所示,图中Ps=As⊕Bs,用以产生乘积的符号位。
图一并行4位二进制乘法器的电路结构图二、设计输入|本实验选择Altera公司的FLEX器件中的FLEX10K10芯片,并用QuartusII 软件进行设计,采用原理图输入方式。
图形输入文件如下图二所示。
图二高速并行乘法器的图形输入文件三、逻辑仿真建立高速并行乘法器的原理图输入文件之后,将文件编译,待编译成功后进行时序仿真,仿真结果如下图三。
图三高速并行乘法器仿真结果实验二、十字路口交通管理器的设计…一、交通管理器的功能该管理器控制甲、乙两道的红、黄、绿三色灯,指挥车辆和行人安全通行。
交通管理器示意图如下图四所示。
图中R1、Y1、G1是甲道红、黄、绿灯;R2、Y2、G2是乙道红、黄、绿灯。
图四十字路口交通管理器示意图该交通管理器由控制器和受其控制的三个定时器及六个交通管理灯组成。
图四中三个定时器分别确定甲道和乙道通行时间t3、t1,以及公共的停车(黄灯燃亮)时间t2。
这三个定时器采用以秒信号为时钟的计数器来实现,C1、C2、C3为1时,相应的定时器计数,W1、W2、W3为定时计数器的指示信号,计数器在计数过程中,相应的指示信号为0,计数结束时为1.二、系统算法设计十字路口交通管理器是一个控制类型的数字系统,其数据处理单元较简单。
其工作流程图如下图五。
…图五交通管理器工作流程图三、设计输入本设计采用分层次描述方式,且用图形输入和文本输入混合方式建立描述文件。
下图六即为其图形输入文件。
它用框图方式表明系统的组成:控制器和三个各为模26、模5和模30的定时计数器,并给出它们之间的互连关系。
图六交通管理器顶层图形输入文件在顶层图形输入文件中的各模块,其功能用第二层次VHDL源文件描述如下:控制器Control源文件LIBRARY IEEE;'USE traffic_control ISPORT(clk :IN STD_LOGIC;c1,c2,c3 :OUT STD_LOGIC;w1,w2,w3: IN STD_LOGIC;r1,r2: OUT STD_LOGIC;y1,y2: OUT STD_LOGIC;g1,g2: OUT STD_LOGIC;<reset: IN STD_LOGIC);END traffic_control;ARCHITECTURE a OF traffic_control ISTYPE STATE_SPACE IS(S0,S1,S2,S3);SIGNAL state:STATE_SPACE;BEGINGPROCESS(reset,clk)BEGIN$IF reset='1'THENstate<=S0;ELSIF(clk'EVENT AND clk='1')THENCASE state ISWHEN S0=>IF w1='1'THENstate<=S1;END IF;¥WHEN S1=>IF w2='1'THENstate<=S2;END IF;WHEN S2=>IF w3='1'THENstate<=S3;END IF;|WHEN S3=>IF w2='1'THENstate<=S0;END IF;END CASE;END IF;END PROCESS;c1<='1' WHEN state=S0 ELSE'0';[c2<='1' WHEN state=S1 OR state=S3 ELSE'0'; c3<='1' WHEN state=S2 ELSE'0';r1<='1' WHEN state=S1 OR state=S0 ELSE'0'; y1<='1' WHEN state=S3 ELSE'0';g1<='1' WHEN state=S2 ELSE'0';r2<='1' WHEN state=S2 OR state=S3 ELSE'0'; y2<='1' WHEN state=S1 ELSE'0';g2<='1' WHEN state=S0 ELSE'0';@END a;三个计数器的源文件LIBRARY IEEE;USE count30 ISPORT(clk :IN STD_LOGIC;enable :IN STD_LOGIC;c :OUT STD_LOGIC);!END count30;ARCHITECTURE a OF count30 ISBEGINPROCESS(clk)VARIABLE cnt:INTEGER RANGE 30 DOWNTO 0; BEGINIF(clk'EVENT AND clk='1')THENIF enable='1'AND cnt<30 THEN《cnt:=cnt+1;ELSEcnt:=0;END IF;END IF;IF cnt=30 THENC<='1';ELSE:C<='0';END IF;END PROCESS;END a;LIBRARY IEEE;USE count05 ISPORT(·clk :IN STD_LOGIC;enable :IN STD_LOGIC;c :OUT STD_LOGIC);END count05;ARCHITECTURE a OF count05 ISBEGINPROCESS(clk)VARIABLE cnt:INTEGER RANGE 5 DOWNTO 0; $BEGINIF(clk'EVENT AND clk='1')THENIF enable='1'AND cnt<5 THENcnt:=cnt+1;ELSEcnt:=0;END IF;END IF;#IF cnt=5 THENC<='1';ELSEC<='0';END IF;END PROCESS;END a;:LIBRARY IEEE;USE count26 ISPORT(clk :IN STD_LOGIC;enable :IN STD_LOGIC;c :OUT STD_LOGIC);END count26;ARCHITECTURE a OF count26 IS~BEGINPROCESS(clk)VARIABLE cnt:INTEGER RANGE 26 DOWNTO 0; BEGINIF(clk'EVENT AND clk='1')THENIF enable='1'AND cnt<26 THENcnt:=cnt+1;ELSE!cnt:=0;END IF;END IF;IF cnt=26 THENC<='1';ELSEC<='0';END IF;—END PROCESS;END a;四、逻辑仿真编译器将顶层图形输入文件和第二层次功能块VHDL输入文件相结合并编译,确定正确无误后,即可经设计处理产生交通管理器的目标文件。
西南科技大学实验报告现代数字系统设计实验题目:直流电机的PWM控制专业班级:生物医学0502 _学生姓名:***学生学号: ********实验时间: 2个小时指导教师:***一、实验目的1.掌握直流电机的PWM 控制方法;2.锻炼VHDL 语言的编程能力。
二、实验原理及说明PWM 控制就是产生一定周期,占空比不同的方波信号,当占空比较大时,电机转速较高,否则电机转速较低。
当采用FPGA 产生PWM 波形时,只需FPGA 内部资源就可以实现,数字比较器的一端接设定值输出,另一端接线性递增计数器输出。
当线性计数器的计数值小于设定值时输出低电平,当计数器大于设定值时输出高电平,这样就可通过改变设定值,产生占空比不同的方波信号,从而达到控制直流电机转速的目的。
直流电机控制电路主要由2部分组成,如图1所示: ● FPGA 中PWM 脉宽调制信号产生电路; ● FPGA 中正/反转方向控制电路;速度等级设置模块锯齿波发生器(模16计数器)数字比较器模块旋转方向控制模块驱动电路Z (正转)F (反转)PWM 波形输出Z_F (正/反转控制信号)Rst (复位)Clk (时钟)Rst (复位)Level (速度等级按键)接数码管(显示速度等级)图1 直流电机PWM 控制电路三、实验步骤1.在QUARTUSII 软件下创建一工程,工程名为pwm_control ,芯片名为EP1C3T144C8,注意工程路径不要放到软件安装路径下;2.根据实验原理,自己编写VHDL 顶层设计文件实现直流电机的PWM 控制(整个设计要求全部采用VHDL 编写,不能采用原理图方式),参考程序如下:速度等级设置模块process(rst,level)beginif rst='1' thencnt4<=(others=>'0');elsif level='1' and level'event thencnt4<=cnt4+1;end if;end process;process(rst,clk)beginif rst='1' thenspeed<=(others=>'0');elsif clk'event and clk='1' thencase cnt4 isWHEN "00" => speed <= "0011" ;WHEN "01" => speed <= "0100" ;WHEN "10" => speed <= "0101" ;WHEN "11" => speed <= "0111" ;WHEN OTHERS => NULL ;END CASE ;end if;END PROCESS;数字比较器模块process(clk,rst)beginif rst='1' thenagb<='0';elsif clk'event and clk='1' thenif cnt16>speed thenagb<='1';elseagb<='0';end if;end if;end process;锯齿波发生器process(rst,clk)beginif rst='1' thencnt16<=(others=>'0');elsif clk='1' and clk'event thencnt16<=cnt16+1 ;end if;end process;旋转方向控制模块process(rst,clk)beginif rst='1' thenz<='0';f<='0';elsif clk'event and clk='1' thenif z_f='1' thenz<=agb;f<='0';elsez<='0';f<=agb;end if;end if;end process;3.对设计进行全编译;4.分别进行功能与时序仿真,验证逻辑功能;5.锁定引脚实验采用模式5,锁定引脚对照表如下信号键1 键2(level)键3clkz f level_display0level_display1引脚号1 2 3 9313213185 966.下载采用JA TG方式进行下载;7.将实验箱左上方直流电机处跳线位置插到直流允许端,(注意实验完毕后将此跳线插回直流禁止端),将右下方clock0频率改为65536Hz。
数字系统设计综合实验报告1)实验目的复习加法器的分类及工作原理。
掌握用图形法设计半加器的方法。
掌握用元件例化法设计全加器的方法。
掌握用元件例化法设计多位加法器的方法。
掌握用Verilog HDL语言设计多位加法器的方法。
学习运用波形仿真验证程序的正确性。
学习定时分析工具的使用方法。
2)实验原理加法器是能够实现二进制加法运算的电路,是构成计算机中算术运算电路的基本单元。
目前,在数字计算机中,无论加、减、乘、除法运算,都是化为若干步加法运算来完成的。
加法器可分为1位加法器和多位加法器两大类。
1位加法器有可分为半加器和全加器两种,多位加法器可分为串行进位加法器和超前进位加法器两种。
半加器如果不考虑来自低位的进位而将两个1位二进制数相加,称半加。
实现半加运算的电路则称为半加器。
若设A和B是两个1位的加数,S是两者相加的和,C是向高位的进位。
则由二进制加法运算规则可以得到。
全加器在将两个1位二进制数相加时,除了最低位以外,每一位都应该考虑来自低位的进位,即将两个对应位的加数和来自低位的进位三个数相加,这种运算称全加。
实现全加运算的电路则称为全加器。
若设A、B、CI分别是两个1位的加数、来自低位的进位,S是相加的和,C是向高位的进位。
则由二进制加法运算规则可以得到:3)实验内容及步骤用图形法设计半加器,仿真设计结果。
用原件例化的方法设计全加器,仿真设计结果用原件例化的方法设计一个4为二进制加法器,仿真设计结果,进行定时分析。
用Verilog HDL语言设计一个4为二进制加法器,仿真设计结果,进行定时分析。
分别下载用上述两种方法设计4为加法器,并进行在线测试。
4)设计1)用图形法设计的半加器,如下图1所示,由其生成的符号如图2所示。
2)用元件例化的方法设计的全加器如图3所示,由其生成的符号如图4所示。
图三:图四:5)全加器时序仿真波形如图下图所示6)心得体会:第一次做数字系统设计实验,老师给我们讲了用图形法设计的全过程。
数字系统设计综合实验报告序列检测器姓名康丽娟学号 1010406028系别物理与信息工程系班级通信六班2012年 12月 27 日一.实验目的:脉冲序列检测器在现代数字通信系统中发挥着重要的作用,通过中小规模的数字集成电路构成的传统脉冲序列检测器电路往往存在电路设计复杂,体积大,抗干扰能力差以及设计困难、设计周期长等缺点。
因此脉冲序列检测器电路的模块化、集成化已成为发展趋势.它不仅可以使系统体积减小、重量减轻且功耗降低,同时可使系统的可靠性大大提高。
随着电子技术的发展,特别是专用集成电路(ASIC)设计技术的日趋完善,数字化的电子自动化设计(EDA)工具给电子设计带来了巨大变革,尤其是硬件描述语言的出现,解决了传统电路原理图设计系统工程的诸多不便。
随着ASIC技术、EDA技术的不断完善和发展以及VHDL、HDL等通用性好、移植性强的硬件描述语言的普及,FPGA等可编程逻辑器件必将在现代数字应用系统中得到广泛的应用,发挥越来越重要的作用。
在这种背景下,针对大规模可编程逻辑器件FPGA器件的集成度高、工作速度快、编程方便、价格较低,易于实现设备的可编程设计的特点,用硬件描述语言设计FPGA器件来实现脉冲序列检测器。
应用可编程逻辑器件FPGA,来完成高速采编器的功能,具有速度更快、可靠性更高、调试方便的优点,而且电路简单,体积更小,利用VHDL开发的脉冲序列检测器,其通用性和基于模块的设计方法可以节省大量的人力,大大地缩短设计周期,在工程应用中已经取得了显著的效果。
可见,基于FPGA的脉冲序列检测器的设计是现代数字通信的发展要求,从而使得其具有更好的发展前景和使用价值。
二.实验原理序列检测器是一种重要的时序功能部件,他在数据通信,雷达和遥测等领域中用于检测同步识别标志。
更具体说,它是用一组用来检测一组一定长度的序列信号的电路。
本实验设计长度为5的11010序列检测器,其含义是是电路收到一组串行的11010信息后,输出标志Z 在最后一位的有效码到来时输出为1,否则Z输出为0,且序列可以重复使用。
实验三基于状态机的交通灯控制地点:31号楼312房;实验台号:12实验日期与时间:2017年12月08日评分:预习检查纪录:批改教师:报告内容:一、实验要求1、开发板上三个led等分别代表公路上红黄绿三种颜色交通灯。
2、交通灯状态机初始状态为红灯,交通灯工作过程依次是红→绿→黄→红。
3、为了方便观察,本次实验要求红灯的显示时间为9s,绿灯显示时间为6s,黄灯显示时间为3s,时间需要倒计时,在数码管上显示。
编程之前要求同学们先画好ASM图。
4、1Hz分频模块请采用第二次实验中的内容,7段码显示模块请参考书本相关内容。
5、第三次实验课用到EP2C8Q208C8通过74HC595驱动数码管,有两种方法写该模块代码:方法1,用VHDL语言写,(自己写VHDL代码有加实验分)。
方法2,可调用verilog数码管驱动模块,该模块在附件“seg.zip”中。
和其它VHDL编写的模块可以混搭在一个电路图中使用。
EP2C8Q208C8的SCTP,SHCP,SER_DATA数码管信号线通过两块74HC595集成块,再驱动数码管。
6、芯片型号:cyclone:EP2C8Q208C8,开发板所有资料都在“新板”附件中,其中管脚配置在实验要求中是不对的,以“新板”附件中为准。
二、实验内容1设计要求开发板上三个led等分别代表公路上红黄绿三种颜色交通灯。
交通灯状态机初始状态为红灯,交通灯工作过程依次是红→绿→黄→红。
本次实验要求红灯的显示时间为9s,绿灯显示时间为6s,黄灯显示时间为3s,时间需要倒计时,在数码管上显示。
2设计思路(1)数码管驱动第三次实验课用到EP2C8Q208C8通过74HC595驱动数码管,有两种方法写该模块代码:方法1,用VHDL语言写,(自己写VHDL代码有加实验分)。
方法2,可调用verilog数码管驱动模块,该模块在附件“seg.zip”中。
和其它VHDL 编写的模块可以混搭在一个电路图中使用。
实验五计数器设计一、实验目的:1)复习计数器的结构组成及工作原理。
2)掌握图形法设计计数器的方法。
3)掌握Verilog HDL语言设计计数器的方法。
4)进一步熟悉设计流程、熟悉数字系统实验开发箱的使用。
二、实验器材:数字系统设计试验箱、导线、计算机、USB接口线三、实验内容:1)用图形法设计一个十进制计数器, 仿真设计结果。
下载, 进行在线测试。
用Verilog HDL语言设计一个十进制的计数器(要求加法计数;时钟上升沿触发;异步清零, 低电平有效;同步置数, 高电平有效), 仿真设计结果。
下载, 进行在线测试。
四、实验截图1)原理图:2)仿真波形:3)文本程序:5)波形仿真:五、实验结果分析、体会:这次实验, , 由于试验箱有抖动, 故在原理图上加了去抖电路, 但是在波形仿真的时候无需考虑抖动, 所以我在波形仿真的时候将去抖电路消除了, 方便观察实验六累加器设计一、实验目的:1)学习了解累加器工作原理;2)了解多层次结构的设计思路;3)学会综合应用原理图和文本相结合的设计方法。
实验器材:数字系统设计试验箱、导线、计算机、USB接口线三、实验内容:1)在文本输入方式下设计分别设计出8位的全加器和8位的寄存器, 并分别存为add8_8.v和reg8.v;3) 2)在原理图输入方式下通过调用两个模块设计出累加器电路, 并存为add8.bdf, 进行功能仿真;下载, 进行在线测试。
四、实验截图1)8位累加器原理图:2)波形仿真:3)文本输入8位加法器语言及符号:生成元器件:4)文本输入8位寄存器:生成图元:五、实验总结:通过本次实验, 学习了解累加器工作原理, 了解多层次结构的设计思路, 学会综合应用原理图和文本相结合的设计方法。
计算机科学与技术学院数字系统设计实验报告姓名:学号:专业:班级:指导教师:2011年11月徐州实验4-1 组合电路的设计实验目的:熟悉Quartus 2的 VHDL 文本设计流程全过程,学习简单组合电路的设计,多层次电路的设计、仿真和硬件测试。
实验内容:1.首先利用Quartus 2 完成2选1 多路选择器的文本编辑输入和仿真测试等步骤,给出仿真波形。
最后在实验系统上进行硬件测试,验证本项设计的功能。
2.将此多路选择器看成是一个元件mux21a,利用元件例化语句描述,并将此文件放在同一目录中。
任务一:1.程序代码ENTITY mux21a ISPORT (a,b,s:IN BIT;y:OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a ISBEGINPROCESS(a,b,s)BEGINIF s='0' THEN y<=a;ELSE y<=b;END IF;END PROCESS;END ARCHITECTURE one;2.编译3.时序仿真4.观察RTL电路任务二:1.程序代码entity MUXK ISPORT (a1,a2,a3,s1,s0: in bit;outy:out bit);end entity MUXK;ARCHITECTURE one of MUXK ISCOMPONENT mux21aport (a,b,s:in bit;y:out bit);end component;signal tmp: bit;beginu1:mux21a port map(a=>a2,b=>a3,s=>s0,y=>tmp);u2:mux21a port map(a=>a1,b=>tmp,s=>s1,y=>outy);end architecture one;2.编译3.波形图4.观察RTL电路实验体会:通过这次实验,对vhdl文本设计流程有了初步的了解,对组合电路的原理和构成有了更深的认识。
一、实验目的1. 熟悉数字系统设计的基本流程和方法;2. 掌握数字系统硬件描述语言(如Verilog)的基本语法和设计方法;3. 培养动手实践能力,提高数字系统设计水平;4. 了解数字系统设计中常用模块的功能和实现方法。
二、实验内容1. 数字系统硬件描述语言(Verilog)编程2. 数字系统模块设计3. 数字系统仿真与调试三、实验步骤1. 设计数字系统模块(1)分析数字系统功能需求,确定模块功能;(2)根据模块功能,设计模块的输入输出端口和内部结构;(3)使用Verilog语言编写模块代码。
2. 编写顶层模块(1)根据数字系统功能需求,设计顶层模块的输入输出端口和内部结构;(2)将已设计的模块实例化,连接各模块端口;(3)编写顶层模块代码。
3. 仿真与调试(1)使用仿真工具(如ModelSim)对顶层模块进行仿真;(2)观察仿真波形,分析模块功能是否满足设计要求;(3)根据仿真结果,对模块代码进行修改和优化;(4)重复步骤(2)和(3),直至模块功能满足设计要求。
四、实验结果与分析1. 数字系统模块设计(1)设计了一个4位加法器模块,包括两个4位输入端口、一个4位输出端口和两个进位输出端口;(2)设计了一个2位乘法器模块,包括两个2位输入端口和一个4位输出端口;(3)设计了一个8位存储器模块,包括一个8位输入端口、一个8位输出端口和一个地址输入端口。
2. 顶层模块设计(1)根据功能需求,设计了一个包含加法器、乘法器和存储器的数字系统顶层模块;(2)将已设计的模块实例化,连接各模块端口;(3)编写顶层模块代码。
3. 仿真与调试(1)使用ModelSim对顶层模块进行仿真;(2)观察仿真波形,发现加法器和乘法器功能正常,但存储器模块存在错误;(3)分析存储器模块代码,发现地址输入端口的逻辑关系错误;(4)修改存储器模块代码,重新进行仿真,验证模块功能正确。
五、实验总结1. 通过本次实验,掌握了数字系统设计的基本流程和方法;2. 学会了使用Verilog语言进行数字系统模块设计;3. 培养了动手实践能力,提高了数字系统设计水平;4. 了解数字系统设计中常用模块的功能和实现方法。
数字系统设计及实验实验报告一、实验目的数字系统设计及实验课程旨在让我们深入理解数字逻辑的基本概念和原理,掌握数字系统的设计方法和实现技术。
通过实验,我们能够将理论知识应用于实际,提高解决问题的能力和实践动手能力。
本次实验的具体目的包括:1、熟悉数字电路的基本逻辑门、组合逻辑电路和时序逻辑电路的设计方法。
2、掌握使用硬件描述语言(如 Verilog 或 VHDL)进行数字系统建模和设计。
3、学会使用相关的电子设计自动化(EDA)工具进行电路的仿真、综合和实现。
4、培养团队合作精神和工程实践能力,提高解决实际问题的综合素质。
二、实验设备和工具1、计算机:用于编写代码、进行仿真和综合。
2、 EDA 软件:如 Quartus II、ModelSim 等。
3、实验开发板:提供硬件平台进行电路的下载和测试。
4、数字万用表、示波器等测量仪器:用于检测电路的性能和信号。
三、实验内容1、基本逻辑门电路的设计与实现设计并实现与门、或门、非门、与非门、或非门和异或门等基本逻辑门电路。
使用 EDA 工具进行仿真,验证逻辑功能的正确性。
在实验开发板上下载并测试实际电路。
2、组合逻辑电路的设计与实现设计一个 4 位加法器,实现两个 4 位二进制数的相加。
设计一个编码器和译码器,实现数字信号的编码和解码。
设计一个数据选择器,根据控制信号选择不同的输入数据。
3、时序逻辑电路的设计与实现设计一个同步计数器,实现模 10 计数功能。
设计一个移位寄存器,实现数据的移位存储功能。
设计一个有限状态机(FSM),实现简单的状态转换和控制逻辑。
四、实验步骤1、设计方案的确定根据实验要求,分析问题,确定电路的功能和性能指标。
选择合适的逻辑器件和设计方法,制定详细的设计方案。
2、代码编写使用硬件描述语言(如 Verilog 或 VHDL)编写电路的代码。
遵循代码规范,注重代码的可读性和可维护性。
3、仿真验证在 EDA 工具中对编写的代码进行仿真,输入不同的测试向量,观察输出结果是否符合预期。
数字系统设计指导老师:孙统风2011年10月实验一组合电路设计一、实验目的熟悉Quartus II的VHDL文本设计流程全过程,学习简单的组合电路的设计、多层次电路设计、仿真和硬件测试。
二、实验内容1.首先利用Quartus II完成2选1多路选择器的文本编辑输入和仿真测试等步骤,给出图3-3所示的仿真波形。
最后在实验系统上进行硬件测试,验证本项设计的功能。
2.将此多路选择器看成是一个元件mux21a,利用元件例化描述图3-31,并将此文件放在同一目录中。
三、实验程序及仿真结果1.2选1多路选择器源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21a ISPORT ( a,b,s: IN BIT;y : OUT BIT);END ENTITY mux21a;ARCHITECTURE one OF mux21a ISBEGINPROCESS(a,b,s)BEGINIF s = '0' THENy <= a; ELSEy <= b;END IF;END PROCESS;END ARCHITECTURE one;RTL图如下:2.元件mux21a源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUXK ISPORT (a1,a2,a3,s0,s1:IN STD_LOGIC;y:OUT STD_LOGIC);END ENTITY MUXK;ARCHITECTURE one OF MUXK ISCOMPONENT mux21aPORT(a,b,s:IN STD_LOGIC;y:OUT STD_LOGIC);END COMPONENT;SIGNAL tmp:STD_LOGIC;BEGINU1: mux21a PORT MAP(a=>a2,b=>a3,s=>s0,y=>tmp);U2: mux21a PORT MAP(a=>a1,b=>tmp,s=>s1,y=>y);END ARCHITECTURE one;仿真波形如下:器件RTL电路实验二时序电路的设计一、实验目的熟悉Quartus II的VHDL文本设计过程,学习简单的时序电路的设计、仿真和测试。
二、实验内容1.设计触发器(使用例3-6),给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。
2.设计锁存器(使用例3-14),同样给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。
3.只用一个1位二进制全加器为基本元件和一些辅助的时序电路,设计一个8位串行二进制全加器。
提示:此加法器有并/串和串/并移位寄存器各一。
三、实验程序及仿真结果1. 触发器设计源程序LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF1 ISPORT (CLK, D : IN STD_LOGIC ;Q :OUT STD_LOGIC);END;ARCHITECTURE bhv OF DFF1 ISSIGNAL Q1 : STD_LOGIC ;BEGINPROCESS (CLK)BEGINIF CLK'EVENT AND CLK ='1'THEN Q1 <= D;END IF;END PROCESS ;Q<=Q1;END bhv;仿真波形如下:仿真分析:从仿真的波形可以看出,当clk 为上升沿时,输出随着输入的变化而变化,即实现了一个D触发器的功能。
2.锁存器设计源程序LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY SUO ISPORT (CLK, D : IN STD_LOGIC ;Q :OUT STD_LOGIC);END;ARCHITECTURE bhv OF SUO ISSIGNAL Q1 : STD_LOGIC ;BEGINPROCESS (CLK,D)BEGINIF CLK ='1'THEN Q <= D;END IF;END PROCESS ;END bhv;仿真波形如下:3.八位二进制全加器的设计实验原理:一个8位全加器可以由8个1位全加器构成,加法器间的进位可以串行方式实现,即将地位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin想接。
(1)1位二进制全加器实验原理图1位二进制全加器实验仿真图(2)八位全加器实验原理图八位全加器实验仿真图(3)一位二进制全加器实验源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY F_ADDER ISPORT (AIN, BIN, CIN : IN STD_LOGIC;COUT, SUM : OUT STD_LOGIC );END ENTITY F_ADDER;ARCHITECTURE FD1 OF F_ADDER ISCOMPONENT H_ADDER ISPORT (A, B : IN STD_LOGIC;CO, SO : OUT STD_LOGIC );END COMPONENT;SIGNAL D, E, F : STD_LOGIC;BEGINU1 : H_ADDER PORT MAP(A => AIN, B => BIN, CO => D, SO => E);U2 : H_ADDER PORT MAP(A => E, B => CIN, CO => F, SO => SUM);COUT <= D OR F;END ARCHITECTURE FD1;(4)八位二进制全加器源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY PRODUCT_ADDER_SUBTRACTER ISPORT(A,B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);S:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));END;ARCHITECTURE BEHAVIORAL OF PRODUCT_ADDER_SUBTRACTER ISBEGINBEHAVIOR:PROCESS(A,B) ISVARIABLE CARRY_IN:STD_LOGIC;VARIABLE CARRY_OUT:STD_LOGIC;VARIABLE OP2:STD_LOGIC_VECTOR(B'RANGE);BEGINOP2:=B;END IF;FOR INDEX IN 0 TO 7 LOOPCARRY_IN:=CARRY_OUT;S(INDEX)<=A(INDEX) XOR OP2(INDEX)XOR CARRY_IN ;CARRY_OUT:=(A(INDEX)AND OP2(INDEX))OR(CARRY_IN AND (A(INDEX) XOR OP2(INDEX)));END LOOP;S(8)<=A(7) XOR OP2(7) XOR CARRY_OUT;END PROCESS;END;D触发器RTL图锁存器RTL图实验三七段数码显示译码器设计一、实验目的学习七段数码显示译码器设计;学习VHDL的CASE语句应用及多层次设计方法。
二、实验内容说明程序4-6中各语句的含义,以及该例的整体功能。
在Quartus II上对该示例进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。
提示:用输入总线的方式给出输入数据的信号仿真数据。
三、实验源程序程序4-6LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DECL7S ISPORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0); --输入信号LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); --显示数码END;ARCHITECTURE one OF DECL7S ISBEGINPROCESS(A)BEGINCASE A ISWHEN "0000" => LED7S <="0111111";--显示0WHEN "0001" => LED7S <="0000110";--显示1WHEN "0010" => LED7S <="1011011";--显示2WHEN "0011" => LED7S <="1001111";--显示3WHEN "0100" => LED7S <="1100110";--显示4WHEN "0101" => LED7S <="1101101";--显示5WHEN "0110" => LED7S <="1111101";--显示6WHEN "0111" => LED7S <="0000111";--显示7WHEN "1000" => LED7S <="1111111";--显示8WHEN "1001" => LED7S <="1101111";--显示9WHEN "1010" => LED7S <="1110111";--显示AWHEN "1011" => LED7S <="1111100";--显示BWHEN "1100" => LED7S <="0111001";--显示CWHEN "1101" => LED7S <="1011110";--显示DWHEN "1110" => LED7S <="1111001";--显示EWHEN "1111" => LED7S <="1110001";--显示F WHEN OTHERS =>NULL;END CASE;END PROCESS;END;四、仿真波形图及RTL图。