北邮数电实验报告信息_第1页
北邮数电实验报告信息_第2页
北邮数电实验报告信息_第3页
北邮数电实验报告信息_第4页
北邮数电实验报告信息_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字电路与逻辑设计实验姓名*学院信息与通信工程学院专业信息工程班级*学号*班序号*实验一一、实验名称和实验任务要求1. 实验容: QuartusII 原理图输入法设计与实现。2. 实验目的:( 1) 熟悉用 QuartusII 原理图输入法进行电路设计和仿真。( 2) 掌握 QuartusII 图形模块单元的生成与调用。( 3) 熟悉实验板的使用。3. 实验任务要求:( 1) 用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图像模块。( 2) 用实验容 1 中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板上测试。要求用拨码开关设定输入信号,发光二极管显示

2、输出信号。( 3) 用 3 线 8 线译码器( 74LS138)和逻辑门实现函数F=(/?)(/?)(/?)+(/?)?(/?)+?(/?)(/?)+?,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。二、原理图半加器模块和逻辑门设计实现的全加器:三、仿真波形图及分析电路实现了全加器的功能。 全加器是实现两个 1 位二进制数及低位来的进位相加求得和数及向高位进位的逻辑电路。由其原理可得逻辑表达式:sum=ain bin cincout = (ainbin)cin + ain*bin 。列出真值表:输入输出ainbincincoutsum000000010

3、1010010111010001101101101011111仿真波形对比真值表,可以看出波形图与理论值完全符合。四、故障及问题分析1、问题:按照逻辑表达式连接了全加器电路后,仿真波形很乱。解决方法:思考后知道了应该把输入信号依次设成2 的 n 次方,这样的仿真波形清楚容易分析。2、问题:把代码下载到板子上的过程中,进行到37%的时候停了,等了2 分钟也没继续下载。解决方法:再次重连 USB 尝试下载,手紧握着接线口,下载成功了,分析可能是接线口接触不好。实验二一、实验名称和实验任务要求1. 实验容:用 VHDL 设计与实现组合逻辑电路。2. 实验目的:( 1) 熟悉用 VHDL 语言设计组合

4、逻辑电路的方法。( 2) 熟悉用 QuartusII 文本输入法进行电路设计。3. 实验任务要求:( 1) 用 VHDL 语言设计实现一个 4 位二进制奇校验器,输入奇数个1时,输出为 1,否则输出 0,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。( 2) 用 VHDL 语言设计实现一个 8421 码转换为余 3 码的代码转换器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。( 3) 用 VHDL 语言设计实现一个共阴极 7 段数码管译码器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,7

5、段数码管显示输出信号。二、 VHDL 代码1. 奇校验器LIBRARY IEEE;ENTITY jijiaoyanqi ISPORT(A:STD_LOGIC;B:STD_LOGIC;C:STD_LOGIC;D:STD_LOGIC;F:OUT STD_LOGIC);END jijiaoyanqi;ARCHITECTURE one OF jijiaoyanqi ISSIGNAL n1,n2 : STD_LOGIC;BEGINn1<=A XOR B;n2<=n1 XOR C;F<=n2 XOR D;-异或, A BCDEND one;2. 8421 码转余 3 码LIBRARY I

6、EEE;ENTITY basizhuanyu3 ISPORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);B:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END basizhuanyu3;ARCHITECTURE zhuanyu3 OF basizhuanyu3 ISBEGINPROCESS(A)BEGINCASE A ISWHEN"0000"=> B<="0011"WHEN"0001"=> B<="0100"WHEN"0010&quo

7、t;=> B<="0101"WHEN"0011"=> B<="0110"WHEN"0100"=> B<="0111"WHEN"0101"=> B<="1000"WHEN"0110"=> B<="1001"WHEN"0111"=> B<="1010"WHEN"1000"=> B<

8、;="1011"WHEN"1001"=> B<="1100"WHEN OTHERS=> B<="ZZZZ"END CASE;END PROCESS;END zhuanyu3;3. 数码管译码器LIBRARY IEEE;ENTITY shumaguanyimaqi ISPORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);B:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);C:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);END s

9、humaguanyimaqi;ARCHITECTURE shuma OF shumaguanyimaqi ISBEGINPROCESS(A)BEGINC<="011111"CASE A ISWHEN"0000"=> B<="1111110"-0WHEN"0001"=> B<="0110000"-1WHEN"0010"=> B<="1101101"-2WHEN"0011"=> B<=&

10、quot;1111001"-3WHEN"0100"=> B<="0110011"-4WHEN"0101"=> B<="1011011"-5WHEN"0110"=> B<="1011111"-6WHEN"0111"=> B<="1110000"-7WHEN"1000"=> B<="1111111"-8WHEN"1001&

11、quot;=> B<="1111011"-9WHEN OTHERS=> B<="ZZZZZZZ"END CASE;END PROCESS;END shuma;三、故障及问题分析1 、 问 题 : 代 码 写 好 以后 编译 出现 错 误, Error (10568): VHDL error at jijiaoyanqi.vhd(17): can't write to interface object "partout" of mode IN,由于报错指到了第 17 行 F<=n2 XOR D; 导

12、致我开始的时候没意识到这是哪里的错误。解决方法:在百度查了以后发现是 F:OUT STD_LOGIC); 这句我写成了 F:IN STD_LOGIC); 以后要注意少犯这些马虎的错误。2、问题:把代码下载到板子上的过程中,再次出现了第一节课出现的下载停止的问题,再次尝试后也没有下载成功,第三次接线的时候等了好久, Hardware Setup窗口也没有显示有硬件接入。解决方法:换了一台电脑尝试然后成功了,我觉得可能是两个原因,一是我反复操作导致软件反应时间长,二是我本来用的电脑接口连接不好。实验三一、实验名称和实验任务要求1. 实验容:用 VHDL 设计与实现时序逻辑电路。2. 实验目的:(

13、1) 熟悉用 VHDL 语言设计时序逻辑电路的方法。( 2) 熟悉用 QuartusII 文本输入法进行电路设计。3. 实验任务要求:( 1) 用 VHDL 语言设计实现一个分频系数为 12,分频输出信号占空比为 50%的分频器。要求在 QuartusII 平台上设计程序并仿真验证设计。( 2) 用 VHDL 语言设计实现一个带异步复位的 8421 码十进制计数器,仿真验证其功能,并下载到实验板测试。要求用按键设定输入信号,发光二极管显示输出信号。( 3) 将( 1)、(2)和数码管译码器 3 个电路进行连接,并下载到实验板显示计数结果。二、模块端口说明及连接图1. 整个电路输入端:时钟信号

14、CLK ,复位键 CLR 。2. 分频器及计数器的端口连接: 复位键 CLR 作为分频器复位键 CLR1、8421十进制计数器复位键 CLR2 ;时钟信号 CLK 作为分频器的时钟信号CLK1 ,分频器输出 CLK_OUT1 作为 8421 十进制计数器的时钟信号 CLK2 ;计数器的输出 Q0,1,2,3作为数码管译码器的输入 a 0,1,2,3。3. 整个电路输出端: b0,1,2,3,4,5,6,分别对应 7 段数码管; c0,1,2,3,4,5,分别对应 6 个数码管译码器。三、 VHDL 代码(1) 8421 十进制计数器:LIBRARY IEEE;ENTITY ZY8421shij

15、inzhi ISPORT(CLK2,CLR2:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END ZY8421shijinzhi;ARCHITECTURE behave OF ZY8421shijinzhi ISSIGNAL Q_temp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK2,CLR2)BEGINIF CLR2 = '1' THEN Q_temp <="0000"ELSIF CLK2'EVENT AND CLK2 = '1

16、9; THENIF Q_temp = "1001" THEN Q_temp <="0000"ELSE Q_temp <=Q_temp+1;END IF;END IF;END PROCESS;Q <=Q_temp;END behave;(2) 分频器:LIBRARY IEEE;ENTITY div_50M ISPORT(CLK1,CLR1:IN STD_LOGIC;CLK_OUT1:OUT STD_LOGIC);END div_50M;ARCHITECTURE behave OF div_50M ISSIGNAL temp:INTEGER

17、 RANGE 0 TO 24999999;SIGNAL clkout:STD_LOGIC;BEGINPROCESS(CLK1,CLR1)BEGINIF CLR1 = '1' THEN temp <=0;ELSIF CLK1'EVENT AND CLK1 = '1' THENIF temp = 24999999 THEN temp <=0;clkout <=NOT clkout; ELSE temp <=temp+1;END IF;END IF;END PROCESS ;CLK_OUT1 <=clkout;END behave

18、;(3) 将分频器、 8421 十进制计数器和数码管译码器 3 个电路的连接电路LIBRARY IEEE;ENTITY function3 ISPORT(CLK,CLR:IN STD_LOGIC;b: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);c: OUT STD_LOGIC_VECTOR(5 DOWNTO 0); END function3 ;ARCHITECTURE a1 OF function3 ISCOMPONENT div_50M -调用分频器和计数器两个元件 PORT(CLK1,CLR1:IN STD_LOGIC;CLK_OUT1:OUT STD_LOGIC

19、);END COMPONENT;COMPONENT ZY8421shijinzhiPORT(CLK2,CLR2:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT;SIGNAL a : STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL clkin : STD_LOGIC;BEGINu1:div_50M PORT MAP (CLK1=>CLK,CLR1=>CLR,CLK_OUT1=>clkin);u2: ZY8421shijinzhi PORT MAP (CLK2=>clkin,

20、CLR2=>CLR,Q=>a); PROCESS(a)BEGINc<=" 110111" -左数第三个数码管亮CASE a ISWHEN "0000" => b<="1111110"-0WHEN "0001" => b<="0110000"-1WHEN "0010" => b<="1101101"-2WHEN "0011" => b<="1111001"

21、;-3WHEN "0100" => b<="0110011"-4WHEN "0101" => b<="1011011"-5WHEN "0110" => b<="1011111"-6WHEN "0111" => b<="1110000"-7WHEN "1000" => b<="1111111"-8WHEN "1001"

22、=> b<="1111011"-9WHEN OTHERS => b<="1111110"-0END CASE;END PROCESS;END;四、仿真波形图及分析分析仿真波形图可知, c 为 110111,左数第三个数码管亮; 数码管译码器循环显示 0 到 9 这 10 个数字;复位信号 CLK 是高电平有效,从波形中看出 CLR=1 时输出 b=1111110,数码管显示数字 0。五、故障及问题分析1、问题:分频器代码编译成功后准备下载到板子上,在准备设置端口时,出现了这个跟之前不一样界面,没办法下载代码。解决方法:后来发现是最

23、开始的时候,器件设置有问题,应该按照书上讲的在 Available device s 栏选择 EPM11270T144C5 这个型号。前两次实验都没有犯这个错误, 我认识到我不应该忽视前面的必要步骤,某个小细节的不注意可能会导致重做整个项目。2、问题:把( 3)的代码写好后编译出现错误, Error (10313): VHDL Case Statement error at function3.vhd(30): Case Statement choices must cover all possible values of expression。解决方法:后来我检查发现是穷举法中的可能情况里忘

24、了写 WHEN OTHERS => b<="0000000" 这一行,导致情况包括不完全而报错。3、问题:仿真波形中b 的显示类似乱码,并不是预想的二进制码。解决方法:老师讲解后知道了应该在Count Value 选项中的 Radix 栏选择 Binary。实验四一、实验名称和实验任务要求1. 实验容:用 VHDL 设计与实现相关电路。2. 实验目的:( 1) 掌握 VHDL 语言的语法规,掌握时序电路描述方法。( 2) 掌握多个数码管动态扫描显示的原理及设计方法。3. 实验任务要求:( 1) 用 VHDL 语言设计并实现六个数码管串行扫描电路, 要求同时显示“

25、班号班序号”这 6 个数字图形到 6 个数码管,仿真验证其功能,并下载到实验板测试。( 2) 用 VHDL 语言设计并实现六个数码管滚动显示电路。循环左滚动,始终点亮 6 个数码管,左出右进。状态为: 124-17,24-171,4-1712,-17124,17124-,7124-1,124-17。二、 模块端口说明及连接图1. 输入端: clk 时钟信号2. 输出端: partout0,1,2,3,4,5,6,分别对应 7 段数码管; catout0,1,2,3,4,5:分别对应 6 个数码管译码器三、 VHDL 代码(1) 同时显示“班号班序号”这六个数字图形到6 个数码管LIBRARY

26、IEEE;ENTITY ZY12417 ISPORT (clk : IN STD_LOGIC;partout : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);catout : OUT STD_LOGIC_VECTOR(5 DOWNTO 0) ); END ZY12417;ARCHITECTURE A OF ZY12417 ISSIGNAL part:STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL cat:STD_LOGIC_VECTOR(5 DOWNTO 0);SIGNAL tempclk: STD_LOGIC;SIGNAL count:INTEG

27、ER RANGE 0 TO 1999;-为便于仿真,仿真图对应代码将分频改成了 50 CONSTANT M: INTEGER :=1999;BEGINP1:PROCESS(clk)BEGINIF(clk'EVENT AND clk='1')THENIF count=M THENcount<=0;tempclk<= NOT tempclk;ELSEcount<=count+1;END IF;END IF;END PROCESS P1;P2:PROCESS(tempclk)BEGINIF(tempclk'EVENT AND tempclk='

28、;1')THENCASE cat ISWHEN"111110"=> cat<="011111"part<="0110000" -1WHEN"011111"=> cat<="101111"part<="1101101" -2WHEN"101111"=> cat<="110111"part<="0110011" -4WHEN"110111"

29、=> cat<="111011"part<="0000001" - -WHEN"111011"=> cat<="111101"part<="0110000" -1 WHEN"111101"=> cat<="111110"part<="1110000" -7WHEN OTHERS => cat<="011111"part<="011000

30、0" -1END CASE;END IF;END PROCESS P2;catout<=cat;partout<=part;END A;(2) 滚动显示电路(选做)LIBRARY IEEE;ENTITY gundongxianshi ISPORT(clk,clear:IN STD_LOGIC;catout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); partout:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);END gundongxianshi;ARCHITECTUREaOF gundongxianshi ISSIGNALca

31、t :STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNALpart :STD_LOGIC_VECTOR(5 DOWNTO 0);SIGNALt,cnt1 :INTEGER RANGE 0 TO 11;SIGNALtmp:INTEGER RANGE 0 TO 15999;SIGNALclk1:STD_LOGIC;BEGINp0:PROCESS(clk,clear)BEGINIF clear='0'THENtmp<=0;ELSIF clk'EVENTANDclk='1'THENIF tmp=15999 THENtmp<=0;EL

32、SEtmp<=tmp+1;END IF;END IF;END PROCESS p0;p1:PROCESS(tmp)BEGINIF clk'EVENTANDclk='1'THENIF tmp<1000THENclk1<='0'ELSEclk1<='1'END IF;END IF;END PROCESS p1;p2:PROCESS(clk)BEGINIF(clk'EVENTANDclk='1')THENIF(cnt=11)THENt<=0;ELSE t<=cnt+1;END IF;E

33、ND IF;END PROCESS p2;p3:PROCESS(clk1)BEGINIF(clk1'EVENTANDclk1='1')THENIF(cnt1=11) THEN t1<=0;ELSEt1<=cnt1+1;END IF;END IF;END PROCESS p3;p4:PROCESS(cnt,cnt1)BEGINIF(clear='0')THEN cat<="0000000"ELSECASEt+cnt1 ISWHEN 6=>cat<="0110000"WHEN 7=>

34、cat<="1101101"WHEN 8=>cat<="0110011"WHEN 9=>cat<="0000001"WHEN 10=>cat<="1101101"WHEN 11=>cat<="1101101"WHEN OTHERS =>cat<="0000000"END CASE;END IF;END PROCESS p4;catout<=cat;p5:PROCESS(cnt)BEGINIF(clear=

35、'0')THENpart<="111111"ELSECASEt ISWHEN 0=>part<="011111"WHEN 1=>part<="101111"WHEN 2=>part<="110111"WHEN 3=>part<="111011"WHEN 4=>part<="111101"WHEN 5=>part<="111110"WHEN OTHERS =>

36、part<="111111"END CASE;END IF;END PROCESS p5;partout<=part;END a;四、 仿真波形图及分析同时显示“班号班序号”这六个数字图形到6 个数码管分析仿真波形图可知,数码管译码器从左到右依次显示124-17:从左边数,第一个数字 catout=011111对应 partout=0110000,数码管显示数字 1;第二个数字 catout=101111对应 partout=1101101,数码管显示数字2;第三个数字 catout=110111对应 partout=0110011,数码管显示数字4;第四个数字 catout=111011对应 partout=0000001,数码管显示符号 “”;第五个数字 catout=111101对应 partout=0110000,数码管显示数字1;第六个数字 catout=111110对应 partout=1110000,数码管显示数字7;当频率足够大,扫描速度很快时, 人眼将能看到持续稳定的 124-17的图像。在实验室实际测试时,下载到电路板

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论