版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数字系统EDA技术实验指导书学院:学号:姓名: 实验一 八位全加器的设计一、 预习内容1. 结合教材中的介绍熟悉Quartus软件的使用及设计流程;2. 八位全加器设计原理。二、实验目的3. 图形设计方法二、实验目的1. 掌握图形设计方法;2. 熟悉Quartus软件的使用及设计流程;3. 掌握全加器原理,能进行多位加法器的设计。三、实验器材三、 实验器材PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干四、实验要求 1、用VHDL设计一个四位并行全加器; 2、用图形方式构成一个八位全加器的顶层文件; 3、完成八位全加器的时序仿真。五、实验原理与内容1、原理:加法器是数字系统
2、中的基本逻辑器件。例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。实验表明,4 位二进制并行加法器和串行级联加法器占用几乎相同的资源。这样,多位数加法器由4 位二进制并行加法器级联构成是较好的折中选择。因此
3、本实验中的8 位加法器采用两个4位二进制并行加法器级联而成。2、实现框图: 1)四位加法器 四位加法器可以采用四个一位全加器级连成串行进位加法器,实现框图如下图所示,其中CSA为一位全加器。显然,对于这种方式,因高位运算必须要等低位进位来到后才能进行,因此它的延迟非常可观,高速运算肯定无法胜任。通过对串行进位加法器研究可得:运算的延迟是由于进位的延迟。因此,减小进位的延迟对提高运算速度非常有效。下图是减少了进位延迟的一种实现方法。可见,将迭代关系去掉,则各位彼此独立,进位传播不复存在。因此,总的延迟是两级门的延迟,其高速也就自不待言。2)八位加法器用两个并行四位加法器实现一个八位加法器的框图如
4、下:六、实验步骤1、 用VHDL语言或图形输入法设计一个并行四位全加器;2、 利用步骤一得到的四位全加器使用图形输入法实现一个8位全加器;3、 对最后的顶层文件进行编译、仿真;4、 如果时间有余可以直接设计一个八位的串行全加器,比较上述两种方法 综合后的不同(主要从消耗资源和运算速度考虑)。七、实验报告1、四位加法器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity adder4 is port(c4: in std_logic; a4: in std_logic_vector(3 do
5、wnto 0); b4: in std_logic_vector(3 downto 0); s4: out std_logic_vector(3 downto 0); co4: out std_logic);end entity adder4;architecture art of adder4 is signal s5:std_logic_vector(4 downto 0); signal a5,b5:std_logic_vector(4 downto 0); begin a5<='0'&a4; b5<='0'&b4; s5<
6、;=a5+b5+c4; s4<=s5(3 downto 0); co4<=s5(4); end architecture art;连线图仿真波形2、 分析实验结果; 从波形中可以看出,S8的输出由A8和B8的和来得到,而且显示是以8个为一组进行显示的。3、 心得体会; 首先编写正确的程序是非常重要的,特别注意拼写的情况。另外在仿真是一定要搞清楚,顶层文件和其它组成文件的区别。在一开始就应该注意到,免得在后面又重新来建立新的工程。八、问题及思考试设计一由8 位二进制加法器为基本元件构成的8位减法器。源程序library ieee;use ieee.std_logic_1164.all
7、;use ieee.std_logic_unsigned.all;entity adder8 is port(c8: in std_logic; a8: in std_logic_vector(7 downto 0); b8: in std_logic_vector(7 downto 0); s8: out std_logic_vector(7 downto 0); co8: out std_logic);end entity adder8;architecture art of adder8 is component adder4 is port(c4: in std_logic; a4:
8、in std_logic_vector(3 downto 0); b4: in std_logic_vector(3 downto 0); s4: out std_logic_vector(3 downto 0); co4: out std_logic); end component adder4; signal sc:std_logic; begin u1:adder4 port map(c4=>c8,a4=>a8(3 downto 0),b4=>b8(3 downto 0),s4=>s8(3 downto 0),co4=>sc); u2:adder4 port
9、 map(c4=>sc,a4=>a8(7 downto 4),b4=>b8(7 downto 4),s4=>s8(7 downto 4),co4=>co8); end architecture art;电路图 仿真波形实验二 用七段LED显示8421BCD码的VHDL设计一、预习内容1、 结合附录一了解EDA实验箱的原理;2、 七段LED显示原理;3、 怎样用VHDL实现8421BCD码在七段LED数码管上显示。二、实验目的实验目的1. 了解VHDL进行EDA设计的基本步骤;2. 学会用Quartus进行时序仿真;3. 了解EDA实验箱的基本功能;三、实验器材验器
10、材PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干四、实验要求1. 用VHDL设计具有清除端、使能端,计数范围为0-999的计数器设计。输出为8421BCD码;2. 用VHDL设计七段LED译码显示电路;3. Quartus进行时序仿真;4. 下载该程序验证程序是否正确;5. 请事先准备一个优盘,本实验程序需要保存,后面实验需要用到。五、实验原理与内容1、 8421BCD编码 在数字系统中常用四位二进制代码来表示一位十进制数字0、1、2、9,称之为二十进制代码,即BCD码。将十进制数编成BCD码的电路,称为称二十进制(BCD)编码器。二-十进制编码的方案很多,若BCD编码器
11、采用8421编码方案,称为8421BCD编码器。2、 七段译码器下图为译码器逻辑图,请按图进行连线。其中A,B,C,D 接拨号开关,a,b,c,d,e,f,g 接数码显示接口,管脚映射均为I/O 口,映射后,通过拨号开关改变输入二进制码,则输出数码管上显示相应的数值。3、 译码器真值表数值输入输出ABCDabcdefg000001111110100010110000200101101101300111111001401000110011501011011011601101011111701111110000810001111111910011111011A10101110111B1011001
12、1111C11001001110D11010111101E11101001111F11111000111六、实验步骤1、写出七段译码器和具有清除端、使能端,计数范围为0-999的计数器的VHDL源程序,编译通过;2、进行波形仿真;3、选定器件、映射管脚、编译、下载。七、实验报告1、写出实验源程序,画出仿真波形;三、各模块VHDL程序1、0-9计数器2、0-999计数器3、译码显示模块四、各模块仿真测试 1、(1)0-9计数器功能仿真:2、(1)0-999计数器功能仿真:3、(1)译码显示电路功能仿真4、(1)整体时序仿真:五、实验结论:1、十进制计数器确实能实现对时钟脉冲的计数并且产生进位输出
13、;2、由十进制计数器级联成的0-999计数器也能实现对时钟脉冲的计数,并且产生进位输出,而且输出的计数符合8421码格式。3、七段显示程序的输出是十六进制形式,输出结果与原理完全一致。4、各个仿真波形均有延迟。5、各模块及总体均符合功能设计要求。六、思考题:要译出0-9和一,只需要将译码模块中的when others=> dout<=“0000000”改为:when others=> dout<=“0000001”即可。实验三 扫描显示电路设计一、预习内容 1、什么是扫描显示; 2、怎样实现数码显示; 3、写出原理草图,写出源程序。二、 实验目的实验目的1、进一步熟悉用
14、VHDL进行EDA设计方法;2、本实验与实验二的不同之处在八个数码管都要稳定地显示;3、进一步了解EDA实验箱的基本功能;三、 实验器材实验器材PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干四、 实验要求五、1、用VHDL设计一个扫描显示电路,使得八个数码管能同时显示(要求显示的值为自己的学号+100,如学号为1,则数码管显示101,多出的数码管全显示0),然后编译、仿真;2、下载该程序,验证程序是否正确。3、请事先准备一个优盘,后面实验需要用到。五、实验原理与内容数码显示板上一共有8 个数码管,如果按照传统的数码管驱动方式(静态扫描方式),则需要8 个七段译码器进行驱动
15、,这样既浪费资源,有时电路工作也不可靠。所以现在最常见的数码管驱动电路已经不用上述的静态扫描方式了,而是采用动态扫描显示的方式,这种方式只需一个译码器就可以实现电路正常、可靠的工作,这样大大节省资源。动态数码扫描显示方式是利用了人眼的视觉暂留效应,把八个数码管按一定顺序(从左至右或从右至左)进行点亮,当点亮的频率(即扫描频率)不大时,我们看到的是数码管一个个的点亮,然而,当点亮频率足够大时,我们看到的不再是一个一个的点亮,而是全部同时显示(点亮),与传统方式得到的视觉效果完全一样。因此我们只要给数码管这样一个扫描频率,那么就可以实现两个以上的数码管同时点亮。而这个频率我们可以通过一个计数器来产
16、生,只要计数频率足够大,就可以实现我们的要求。事实上,因为数码管点亮不是瞬间就可以的,它也需要一定的时间,该时间与数码管的选择有关系。为了折中这一对矛盾,实验中一般可将计数频率选择在100Hz左右肯定可以满足上述两个要求。动态数码扫描显示的硬件电路设计要求是:对共阴数码管,将其公共端阴极接三八译码器的输出,三八译码器的输入为位选信号输入;将8 个(或更多)的数码管的相同段接在一起,然后引出。原理图如下:6、 实验步骤1、调出实验二的源程序,检查是否正确;2、修改实验二程序实现0999的8421BCD码,并将结果通过数码管显示;3、编译、仿真程序;4、下载程序判断是否正确。七、实验报告 1、写出
17、实验源程序,画出仿真波形;七段译码器源程序Library ieee;Use ieee.std_logic_1164.all;Entity BCD is Port(bcd:in std_logic_vector(3 downto 0); y:out std_logic_vector(6 downto 0);End entity BCD;Architecture rt1 of BCD isBegin Process(bcd) isBegin Case bcd is When "0000"=>y<="1111110"When "0001&
18、quot;=>y<="0110000"When "0010"=>y<="1101101"When "0011"=>y<="1111001"When "0100"=>y<="0110011"When "0101"=>y<="1011011"When "0110"=>y<="1011111"When "
19、;0111"=>y<="1110000"When "1000"=>y<="1111111"When "1001"=>y<="1111011"When others=>y<="0000000" End case;End process;End architecture rt1;计数器源程序Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigne
20、d.all;Entity count is Port(clk,reset:in std_logic; d:out std_logic_vector(2 downto 0);End entity count;Architecture rt1 of count isSignal y:std_logic_vector(2 downto 0);Begin Process(clk,reset) is Begin d<=y; if reset='1' then y<="000" else if (clk'event and clk='1
21、9;) then if (y="111") then y<="000" else y<=y+'1' end if; end if; end if;end process;end architecture rt1;输入数据Library ieee;Use ieee.std_logic_1164.all;Entity data is Port(count:in std_logic_vector(2 downto 0); reset:in std_logic; y:out std_logic_vector(3 downto 0);E
22、nd entity data;Architecture rt1 of data isBegin Process(count,reset) isBegin if reset='1' then y<="0000" else Case count is When "000"=>y<="1001"When "001"=>y<="0001"When "010"=>y<="0001"When "011
23、"=>y<="0000"When "100"=>y<="0000"When "101"=>y<="0000"When "110"=>y<="0000"When "111"=>y<="0000"When others=>y<="0000" End case; end if;End process;End archite
24、cture rt1;电路图仿真波形显示结果2、 总结实验步骤和实验结果 实验过程中用到的子程序很多,要保证每一个子程序的准确性。因为输入很多,在做波形图的时候要注意接入高低电平。3、 心得体会 在调试输出的数据的时候要注意高位和低位。在实验过程中,就出现了高地位相反的问题。 实验四 数字频率计的设计及实现一、预习内容1、什么是数字频率计;2、数字频率计实现原理;3、写出原理草图和源程序。二、实验目的二、实验目的1、学会数字频率计的设计方法;2、掌握自顶向下的设计方法,体会其优越性。三、实验器材三、实验器材PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干四、实验要求1、用VH
25、DL完成8位数字频率计的设计, 该频率计要求频率测量范围:1 Hz 20 MHz;具有清零复位功能;频率测量结果用八位数码管稳定显示;2、用实验系统箱实现该频率计,并用数码管显示所测的频率值。五、实验原理与内容1、测频原理若某一信号在T秒时间里重复变化了N 次,则根据频率的定义可知该信号的频率fs 为:fs=N/T 通常测量时间T取1秒或它的十进制时间。频率计方框图如下:1)时基T 产生电路:提供准确的计数时间T。晶振产生一个振荡频率稳定的脉冲,通过分频整形、门控双稳后,产生所需宽度的基准时间T的脉冲,又称闸门时间脉冲。注意:分频器一般采用计数器完成,计数器的模即为分频比。2)计数脉冲形成电路
26、:将被测信号变换为可计数的窄脉冲,其输出受闸门脉冲的控制。3)计数显示电路:对被测信号进行计数,显示被测信号的频率。计数器一般采用多位10 进制计数器;控制逻辑电路控制计数的工作程序:准备、计数、显示、复位和准备下一次测量。2、具体实现:1) 测频控制逻辑电路(以1 秒为例)2) 产生一个1秒脉宽的周期信号;3) 对计数器的每一位计数使能进行控制;4) 完成下一次测量前的计数器复位;以下是一种可能的时序关系:5) 10 进制计数器要求具有计数使能端CNTEN、复位端CLR、进位输出端CO。3、元件例化图(方框图):注意:用8个十进制计数器实现1MHz 计数。六、实验步骤六、实验步骤1、画出实验
27、原理方框图;2、设计各个元件;3、进行元件例化;4、下载程序,查看数码管显示的频率是否和待测的频率相同。七、实验报告1、源程序CNT10library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity CNT10 is port(clk,clr,ena:in std_logic; cq:out integer range 0 to 15; carry_out:out std_logic);end entity CNT10;architecture art of CNT10 issignal cqi:i
28、nteger range 0 to 15;begin process(clk,clr,ena) is begin if clr='1' then cqi<=0;elsif clk'event and clk='1' then if ena='1' then if cqi<9 then cqi<=cqi+1;else cqi<=0;end if; end if;end if; end process; cq<=cqi;end architecture art;FRE_DIVIDElibrary ieee;use
29、 ieee.std_logic_1164.all;entity FRE_DIVIDE is port(clk_1M:in std_logic; clk_1K,clk_1MZ:out std_logic);end entity FRE_DIVIDE;architecture art of FRE_DIVIDE issignal cout1,cout2:integer;signal K,MZ:std_logic;beginprocess(clk_1M) isbegin clk_1K<=K; clk_1MZ<=MZ; if (clk_1M'event and clk_1M=
30、9;1') then if cout1<999999 then cout1<=cout1+1;MZ<='0'else cout1<=0;MZ<='1'end if;if cout2<9999 then cout2<=cout2+1;K<='0'else cout2<=0;K<='1'end if; end if;end process;end architecture art;REG32Blibrary ieee;use ieee.std_logic_1164.a
31、ll;entity REG32B is port(load:in std_logic; din:in std_logic_vector(31 downto 0); dout:out std_logic_vector(31 downto 0);end entity REG32B;architecture art of REG32B is begin process(load,din)is begin if load'event and load='1' then dout<=din; end if; end process;end architecture art;
32、SEG7-DECLibrary ieee;Use ieee.std_logic_1164.all;Entity SEG7_DEC is Port(bcd:in std_logic_vector(3 downto 0); y:out std_logic_vector(6 downto 0);End entity SEG7_DEC;Architecture rt1 of SEG7_DEC isBegin Process(bcd) isBegin Case bcd is When "0000"=>y<="1111110"When "0001"=>y<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新教育理念下中学音乐教学方案
- 水利工程施工管理流程规范
- 环保技术创新研发成果承诺书(6篇)
- 雨霖铃:诗歌意境与语言艺术教案
- 班级心理健康教育活动设计方案
- 科技创新校本课程开发报告
- 建筑项目管理相关法规汇编
- 跟岗实习心得体会范文集
- 2025医疗器械出口市场贸易壁垒发展机遇投资可行性规划分析报告
- 2025医疗器械产业市场规模预测及投资战略研究报告
- 人教版一上41《10的再认识》课件
- 广东省廉江市实验学校2025届高一物理第一学期期中联考试题含解析
- 渣土运输承包合同
- 人教版(PEP)小学英语-(三、四、五、六年级)-单词表(附注音标)
- 网络传播概论(第5版)课件 第3、4章 网络传播形式的流变、网络传播的多重策略
- 2024年阳泉融盛投资控股集团有限公司招聘笔试冲刺题(带答案解析)
- 计算机专业生涯发展展示
- 红色金融史教学课件
- 大学生职业生涯发展报告
- 热力发电厂课程设计说明书
- 斑点叉尾鮰鱼种培育技术
评论
0/150
提交评论