1、北邮数电上实验报告 北京邮电大学数字电路与逻辑设计实验 学院: 班级: 姓名: 学号: 班内序号: 实验一 Quartus II原理图输入法设计1、实验目的:(1)熟悉Quartus II原理图输入法进行电路设计和仿真。(2)掌握Quartus II 图形模块单元的生成与调(3)熟悉实验板的使用二、实验所用器材:(1)计算机(2)直流稳压电源(3)数字系统与逻辑设计实验开发板三、实验任务要求(1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。(2)用(1)中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发
2、光二极管显示输出信号。(3)用VHDL语言实现全加器。四、实验原理图和实验波形图1、全加器实验原理图。2、全加器实验波形图。五、仿真波形分析 由仿真波形可以看出,当a,b,ci有两个或者两个以上为1时,产生进位,即co输出为1,而输出s则是当a,b,ci输入偶数个1时为0,奇数个1时为1,满足实验原理,仿真波形正确。 实验三 VHDL组合逻辑电路设计一、实验目的:(1)熟悉Quartus II原理图输入法进行电路设计和仿真。(2)掌握Quartus II 图形模块单元的生成与调(3)熟悉实验板的使用二、实验所用器材:(1)计算机(2)直流稳压电源(3)数字系统与逻辑设计实验开发板三、实验任务要
3、求(1)用VHDL语言设计将8421计数器,分频器和数码管译码器连接使用,实现在指定数码管滚动显示0-9,其余数码管不亮,并带有清零功能,并下载到实验板显示计数结果。四、实验VHDL代码和仿真波形图(1)VHDL代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xianshi isport(clk,clr:in std_logic;b:out std_logic_vector(6 downto 0);cat:out std_logic_vector(5 downto 0);end
4、xianshi;architecture a of xianshi issignal ctmp:std_logic_vector(3 downto 0);signal tmp:integer range 0 to 1249999;signal clktmp:std_logic;signal e:std_logic_vector(6 downto 0);beginp1:process(clk,clr)beginif clr=0 thentmp=0;elsif clkevent and clk=1 thenif tmp=1249999 thentmp=0;clktmp=not clktmp;els
5、etmp=tmp+1;end if;end if;end process p1;p2:process(clktmp)beginif clr=0 then ctmp=0000;elsif(clktmpevent and clktmp=1)thenif ctmp=1001thenctmp=0000;elsectmp=ctmp+1;end if;end if;end process p2;p3:process(ctmp,clr)beginif(clr=0)then cateeeeeeeeeee=0000000;end case;cat=110111;end if;b=e;end process p3
6、;(2)仿真波形图 5、仿真波形分析 由仿真波形图可以看出,输出cat始终未110111,只有第三个数码管亮,输出b在循环变化,b控制数码管显示不同的数字,所以这是一个09滚动显示数码管的波形图。6、模块端口说明及连接图 实验四 VHDL组合逻辑电路设计一、实验目的:(1)熟悉Quartus II原理图输入法进行电路设计和仿真。(2)掌握Quartus II 图形模块单元的生成与调(3)熟悉实验板的使用二、实验所用器材:(1)计算机(2)直流稳压电源(3)数字系统与逻辑设计实验开发板三、实验任务要求(1)用 VHDL 语言设计并实现一个 88 点阵行扫描控制器,要求从上至下逐行循环 点亮点阵(
7、红色或绿色均可),每行点亮时间为 0.5 秒。 (2)用 VHDL 语言设计并实现一个 88 点阵行扫描控制器,要求从上至下逐行点亮 点阵,第一行为红色,第二行为绿色,依次类推,直至点亮所有行,然后全部熄灭,再重新从第一行开始。 四、实验VHDL代码和仿真波形图(1)单色逐行点亮VHDL代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dianzhen isport(clk,clr:in std_logic;col,row:out std_logic_vector(7 downto
8、 0);end dianzhen;architecture a of dianzhen issignal a: integer range 0 to 2499999;signal clktmp:std_logic;signal ctmp:std_logic_vector(2 downto 0);beginp1:process(clk,clr)beginif clr=0 thenclktmp=0;elsif clkevent and clk=1 thenif a=2499999 thena=0;clktmp=not clktmp;elsea=a+1;end if;end if;end proce
9、ss p1;p2:process(clktmp)beginif clr=0 then ctmp=000;elsif(clktmpevent and clktmp=1)thenif ctmp=111thenctmp=000;elsectmprowrowrowrowrowrowrowrowrow=11111111;end case;col=11111111;end process p3;end a;(2)单色逐行点亮仿真波形图(3)双色逐行出现点阵VHDL代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.a
10、ll;entity dianzhen isport(clk,clr:in std_logic;colr,colg,row:out std_logic_vector(7 downto 0);end dianzhen;architecture a of dianzhen issignal a: integer range 0 to 2499999;signal clktmp:std_logic;signal ctmp:std_logic_vector(2 downto 0);signal rowtmp:std_logic_vector(7 downto 0);signal colrtmp,colg
11、tmp:std_logic_vector(7 downto 0);beginp1:process(clk,clr)beginif clr=0 thenclktmp=0;elsif clkevent and clk=1 thenif a=2499999 thena=0;clktmp=not clktmp;elsea=a+1;end if;end if;end process p1;p2:process(clktmp)beginif clr=0 then ctmp=000;elsif(clktmpevent and clktmp=1)thenif ctmp=111thenctmp=000;else
12、ctmp=ctmp+1;end if;end if;end process p2;p3:process(ctmp)beginif(clr=0)then rowtmprowtmp=11111110;colrtmp=11111111;colgtmprowtmp=11111101;colgtmp=11111111;colrtmprowtmp=11111011;colrtmp=11111111;colgtmprowtmp=11110111;colgtmp=11111111;colrtmprowtmp=11101111;colrtmp=11111111;colgtmprowtmp=11011111;co
13、lgtmp=11111111;colrtmprowtmp=10111111;colrtmp=11111111;colgtmprowtmp=01111111;colgtmp=11111111;colrtmprowtmp=11111111;colgtmp=00000000;colrtmp=00000000;end case;end if;row=rowtmp;colr=colrtmp;colg=colgtmp;end process p3;end a;(4)双色逐行出现点阵仿真波形图5、仿真波形分析 (1)首先是单色逐行点亮的仿真波形,可以看出, 每列接的都是高电平11111111,每行依次变化,
14、由11111110变为01111111(由于管脚的位置接法,虽然0在最后一位出现,但是是第一行先亮),实现从上到下的依次点亮。(2)其次是双色逐行点亮的仿真波形,我做的是交替点亮过程,所以在下一行点亮的时候,上一行会熄灭,并且颜色会改变,从波形可以看出colr和colg不同时为11111111,而是一个为11111111时,一个为00000000,然后每行row依次改变。6、模块端口说明及连接图(1)单色逐行点亮点阵控制电路(2)双色逐行点亮点阵 本次实验故障及问题分析1、在刚开始实验时,不懂得怎么命名文件,也不知道顶层设计名要与文件名一样,出现了在编译时总是报错,但是却找不到原因的情况。2、
15、在设置波形时,不知道如何设置时钟周期,使得仿真总是不对。后来学会了,先把输入group成一组,然后直接点击出现 这个界面,然后就可以设置了。 总结和结论 通过本学期的数字电路与逻辑设计的实验课程,我基本掌握了quartus的使用方法,VHDL语言的使用方法,并且学会了怎么将设计好的程序下载到实验板上,用实验板上的开关控制led灯或者是数码显示管。虽然在实验过程中,编译总是会有一些小错误,比如,忘了写end if,忘了分号等等,但是,实验课给我一种学以致用的感觉,让我对数字电路与逻辑设计这个课程有了更好的了解,同时,也给我学习课本提供了帮助,当遇到课本上的疑难问题,用quartus仿真就可以清楚观察波形翻转的时间,进位或是借位信号等等。 从这四次实验课,我收获的不仅是quartus的使用方法,更是一种对待课业的态度,不可以粗心大意,要仔细认真,不然就会像仿真结果一样,不断的报错。总而言之,实验课给了我们一个很好的运用知识的平台,我们应该珍惜实验的机会。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1