北邮数电上实验报告.docx
- 文档编号:12312903
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:14
- 大小:100.40KB
北邮数电上实验报告.docx
《北邮数电上实验报告.docx》由会员分享,可在线阅读,更多相关《北邮数电上实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
北邮数电上实验报告
北京邮电大学
数字电路与逻辑设计实验
学院:
班级:
姓名:
学号:
班内序号:
实验一QuartusII原理图输入法设计
1、实验目的:
(1)熟悉QuartusII原理图输入法进行电路设计和仿真。
(2)掌握QuartusII图形模块单元的生成与调
(3)熟悉实验板的使用
二、实验所用器材:
(1)计算机
(2)直流稳压电源
(3)数字系统与逻辑设计实验开发板
三、实验任务要求
(1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。
(2)用
(1)中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。
(3)用VHDL语言实现全加器。
四、实验原理图和实验波形图
1、全加器实验原理图。
2、全加器实验波形图。
五、仿真波形分析
由仿真波形可以看出,当a,b,ci有两个或者两个以上为1时,产生进位,即co输出为1,而输出s则是当a,b,ci输入偶数个1时为0,奇数个1时为1,满足实验原理,仿真波形正确。
实验三VHDL组合逻辑电路设计
一、实验目的:
(1)熟悉QuartusII原理图输入法进行电路设计和仿真。
(2)掌握QuartusII图形模块单元的生成与调
(3)熟悉实验板的使用
二、实验所用器材:
(1)计算机
(2)直流稳压电源
(3)数字系统与逻辑设计实验开发板
三、实验任务要求
(1)用VHDL语言设计将8421计数器,分频器和数码管译码器连接使用,实现在指定数码管滚动显示0-9,其余数码管不亮,并带有清零功能,并下载到实验板显示计数结果。
四、实验VHDL代码和仿真波形图
(1)VHDL代码
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityxianshiis
port(
clk,clr:
instd_logic;
b:
outstd_logic_vector(6downto0);
cat:
outstd_logic_vector(5downto0));
endxianshi;
architectureaofxianshiis
signalctmp:
std_logic_vector(3downto0);
signaltmp:
integerrange0to1249999;
signalclktmp:
std_logic;
signale:
std_logic_vector(6downto0);
begin
p1:
process(clk,clr)
begin
ifclr='0'then
tmp<=0;
elsifclk'eventandclk='1'then
iftmp=1249999then
tmp<=0;clktmp<=notclktmp;
else
tmp<=tmp+1;
endif;
endif;
endprocessp1;
p2:
process(clktmp)
begin
ifclr='0'thenctmp<="0000";
elsif(clktmp'eventandclktmp='1')then
ifctmp="1001"then
ctmp<="0000";
else
ctmp<=ctmp+1;
endif;
endif;
endprocessp2;
p3:
process(ctmp,clr)
begin
if(clr='0')
thencat<="111111";
else
casectmpis
when"0000"=>e<="1111110";--0
when"0001"=>e<="0110000";--1
when"0010"=>e<="1101101";--2
when"0011"=>e<="1111001";--3
when"0100"=>e<="0110011";--4
when"0101"=>e<="1011011";--5
when"0110"=>e<="1011111";--6
when"0111"=>e<="1110000";--7
when"1000"=>e<="1111111";--8
when"1001"=>e<="1111011";--9
whenothers=>e<="0000000";
endcase;
cat<="110111";
endif;
b<=e;
endprocessp3;
(2)仿真波形图
5、仿真波形分析
由仿真波形图可以看出,输出cat始终未110111,只有第三个数码管亮,输出b在循环变化,b控制数码管显示不同的数字,所以这是一个0~9滚动显示数码管的波形图。
6、模块端口说明及连接图
实验四VHDL组合逻辑电路设计
一、实验目的:
(1)熟悉QuartusII原理图输入法进行电路设计和仿真。
(2)掌握QuartusII图形模块单元的生成与调
(3)熟悉实验板的使用
二、实验所用器材:
(1)计算机
(2)直流稳压电源
(3)数字系统与逻辑设计实验开发板
三、实验任务要求
(1)用VHDL语言设计并实现一个8×8点阵行扫描控制器,要求从上至下逐行循环点亮点阵(红色或绿色均可),每行点亮时间为0.5秒。
(2)用VHDL语言设计并实现一个8×8点阵行扫描控制器,要求从上至下逐行点亮点阵,第一行为红色,第二行为绿色,依次类推,直至点亮所有行,然后全部熄灭,再重新从第一行开始。
四、实验VHDL代码和仿真波形图
(1)单色逐行点亮VHDL代码
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitydianzhenis
port(
clk,clr:
instd_logic;
col,row:
outstd_logic_vector(7downto0));
enddianzhen;
architectureaofdianzhenis
signala:
integerrange0to2499999;
signalclktmp:
std_logic;
signalctmp:
std_logic_vector(2downto0);
begin
p1:
process(clk,clr)
begin
ifclr='0'then
clktmp<='0';
elsifclk'eventandclk='1'then
ifa=2499999then
a<=0;clktmp<=notclktmp;
else
a<=a+1;
endif;
endif;
endprocessp1;
p2:
process(clktmp)
begin
ifclr='0'thenctmp<="000";
elsif(clktmp'eventandclktmp='1')then
ifctmp="111"then
ctmp<="000";
else
ctmp<=ctmp+1;
endif;
endif;
endprocessp2;
p3:
process(ctmp)
begin
casectmpis
when"000"=>row<="11111110";
when"001"=>row<="11111101";
when"010"=>row<="11111011";
when"011"=>row<="11110111";
when"100"=>row<="11101111";
when"101"=>row<="11011111";
when"110"=>row<="10111111";
when"111"=>row<="01111111";
whenothers=>row<="11111111";
endcase;
col<="11111111";
endprocessp3;
enda;
(2)单色逐行点亮仿真波形图
(3)双色逐行出现点阵VHDL代码
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitydianzhenis
port(
clk,clr:
instd_logic;
colr,colg,row:
outstd_logic_vector(7downto0));
enddianzhen;
architectureaofdianzhenis
signala:
integerrange0to2499999;
signalclktmp:
std_logic;
signalctmp:
std_logic_vector(2downto0);
signalrowtmp:
std_logic_vector(7downto0);
signalcolrtmp,colgtmp:
std_logic_vector(7downto0);
begin
p1:
process(clk,clr)
begin
ifclr='0'then
clktmp<='0';
elsifclk'eventandclk='1'then
ifa=2499999then
a<=0;clktmp<=notclktmp;
else
a<=a+1;
endif;
endif;
endprocessp1;
p2:
process(clktmp)
begin
ifclr='0'thenctmp<="000";
elsif(clktmp'eventandclktmp='1')then
ifctmp="111"then
ctmp<="000";
else
ctmp<=ctmp+1;
endif;
endif;
endprocessp2;
p3:
process(ctmp)
begin
if(clr='0')
thenrowtmp<="11111111";
else
casectmpis
when"000"=>rowtmp<="11111110";
colrtmp<="11111111";colgtmp<="00000000";
when"001"=>rowtmp<="11111101";
colgtmp<="11111111";colrtmp<="00000000";
when"010"=>rowtmp<="11111011";
colrtmp<="11111111";colgtmp<="00000000";
when"011"=>rowtmp<="11110111";
colgtmp<="11111111";colrtmp<="00000000";
when"100"=>rowtmp<="11101111";
colrtmp<="11111111";colgtmp<="00000000";
when"101"=>rowtmp<="11011111";
colgtmp<="11111111";colrtmp<="00000000";
when"110"=>rowtmp<="10111111";
colrtmp<="11111111";colgtmp<="00000000";
when"111"=>rowtmp<="01111111";
colgtmp<="11111111";colrtmp<="00000000";
whenothers=>rowtmp<="11111111";
colgtmp<="00000000";colrtmp<="00000000";
endcase;
endif;
row<=rowtmp;
colr<=colrtmp;
colg<=colgtmp;
endprocessp3;
enda;
(4)双色逐行出现点阵仿真波形图
5、仿真波形分析
(1)首先是单色逐行点亮的仿真波形,可以看出,每列接的都是高电平11111111,每行依次变化,由11111110变为01111111(由于管脚的位置接法,虽然0在最后一位出现,但是是第一行先亮),实现从上到下的依次点亮。
(2)其次是双色逐行点亮的仿真波形,我做的是交替点亮过程,所以在下一行点亮的时候,上一行会熄灭,并且颜色会改变,从波形可以看出colr和colg不同时为11111111,而是一个为11111111时,一个为00000000,然后每行row依次改变。
6、模块端口说明及连接图
(1)单色逐行点亮点阵控制电路
(2)双色逐行点亮点阵
本次实验故障及问题分析
1、在刚开始实验时,不懂得怎么命名文件,也不知道顶层设计名要与文件名一样,出现了在编译时总是报错,但是却找不到原因的情况。
2、在设置波形时,不知道如何设置时钟周期,使得仿真总是不对。
后来学会了,先把输入group成一组,然后直接点击
出现
这个界面,然后就可以设置了。
总结和结论
通过本学期的数字电路与逻辑设计的实验课程,我基本掌握了quartus的使用方法,VHDL语言的使用方法,并且学会了怎么将设计好的程序下载到实验板上,用实验板上的开关控制led灯或者是数码显示管。
虽然在实验过程中,编译总是会有一些小错误,比如,忘了写endif,忘了分号等等,但是,实验课给我一种学以致用的感觉,让我对数字电路与逻辑设计这个课程有了更好的了解,同时,也给我学习课本提供了帮助,当遇到课本上的疑难问题,用quartus仿真就可以清楚观察波形翻转的时间,进位或是借位信号等等。
从这四次实验课,我收获的不仅是quartus的使用方法,更是一种对待课业的态度,不可以粗心大意,要仔细认真,不然就会像仿真结果一样,不断的报错。
总而言之,实验课给了我们一个很好的运用知识的平台,我们应该珍惜实验的机会。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北邮数电上 实验 报告