EDA技术及应用实验报告参考答案docx文档格式.docx
- 文档编号:6841966
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:28
- 大小:127.81KB
EDA技术及应用实验报告参考答案docx文档格式.docx
《EDA技术及应用实验报告参考答案docx文档格式.docx》由会员分享,可在线阅读,更多相关《EDA技术及应用实验报告参考答案docx文档格式.docx(28页珍藏版)》请在冰点文库上搜索。
inputclock;
output[7:
0]led;
wirep;
int_divul(.clock(clock),,elkout(p)):
ledwateru2(.elk(p),.led(led));
实验三键盘、LED发光实验
本实验的主要目的是联系顶层模块的设计。
学习和体会分支条件语句case的使用及FPGA的I/O控制。
用跳线把keyl-key8和指定的引脚连起来,以实现功能控制。
FPGA的所有的I/O控制块允许每个引脚单独的配置为输入口。
只要配置正确,则一暗淡几个键中有键输入,在检测到键盘输入的情况下,
继续判断其键盘值并作出相应的处理。
1:
按以前的步骤建立工程,并按说明书进行配置引脚,未用的按三态
处理。
2:
对文件进行编译,并检错。
3:
按说明短接跳帽和连接跳线。
4:
观察输入情况。
modulekeyled(key,led);
input[7:
0]key;
output[7:
0]led;
reg[7:
0]led_r;
0]buffer_r;
assignled二ledr;
always®
(key)
begin
buffer_r=key;
case(buffer_r)
8'
blllllllO:
ledr=
=8^11111110;
〃模块名keyled
〃定义键盘输入口
〃定义发光管输出口
〃输出键值
〃过程1
〃读取键值
〃是键KEY1,则给寄存器赋值Oxfe
bllllll01:
led_r二
二8^11111100;
〃是键KEY2,
则给寄存器赋值Oxfc
blllll011:
二8^11111000;
〃是键KEY3,
则给寄存器赋值0xf8
8fbllllOlll:
ledr-
=8^11110000;
〃是键KEY4,
则给寄存器赋值0xf0
8fblllOllll:
=8^11100000;
〃是键KEY5,
则给寄存器赋值0xe0
bllOlllll:
=8^11000000;
〃是键KEY6,
则给寄存器赋值0xc0
blOllllll:
=8^10000000;
〃是键KEY7,
则给寄存器赋值0x80
bOlllllll:
=8^00000000;
〃是键KEY8,
则给寄存器赋值0x00
default:
led_r=
二8^11111111;
〃否则给寄存器赋值Oxff
endcase
1.能否用if语句改写本实验程序?
如果能,写出相应程序。
//模块名keyled
moduIekeyIed(key,Ied);
input[7:
0]Ied;
reg[7:
assignled=led_r;
begin
if(buffer_r=8,b11111110)led_r二8*b11111110;
eIseif(buffer_r=8,b11111101)
led_r二8'
b11111100;
elseif(buffer_r=8‘b11111011)
b11111000;
elseif(buffer_r==8,b11110111)
led_r=8*611110000;
elseif(buffer_r=8‘b11101111)
b11100000;
eIseif(buffer_r==8,b10111111)
led_r=8'
b10000000;
else(buffer_r=8,b01111111)
bOOOOOOOO;
endmoduIe
实验四静态数码管显示实验
学习LPM兆模块的调用。
建立7段译码显示模块,用于控制LED数码管的静态显示。
要求在实验箱上的数码管依显示0—9和A-F16个字符。
本实验通过分频模块int_div分频得到1HZ的频率信号,加载4位计数器的时钟输入端,计数循环输出0-9,A-F16个数,最后通过七段译码后在数码显示出来。
1:
立源程序文件decl7s.v,输入程序代码并保存,并对此生成符号。
添加LPM模块并按需要生成相应的文件。
1.本实验采用的是共阳极数码管,若采用共阴极数码管,有什么不
同?
对应显示相同的数时,输入的不同。
2.如何显示和PPPPPPPP?
H对应的89h,P对应的是73h;
实验五动态数码管显示实验
、实验目的学习动态扫描显示的原理图及电路的设计。
二、实验内容1:
在SmartSOPC试验箱上完成LED数码管的动态显示“1-8”个数字。
放慢扫描速度演示动态显示的原理过程。
虽然每次只有一个LED显示,但只要扫描显示速率够快,由于人的视觉余辉效应,使我们仍会感觉所有的数码管都在同时显示。
四、实验步骤1:
建立一个空白工程,并命名。
对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更改,直至编译成功为止。
从设计文件创建模块。
将光盘中EDA目录文件拷贝到工程目录。
5:
添加常量兆功能模块。
modulescan_led(clk_lk,d,dig,seg);
inputclk_lk;
input[31:
0]d;
0]dig;
0]seg;
0]seg_r;
0]dig_r;
reg[3:
0]disp_dat;
reg[2:
0]count;
assigndig=dig_r;
〃模块名scan_led
〃输入时钟
〃输入要显示的数据
//数码管选择输出引脚
〃数码管段输出引脚
〃定义数码管输出寄存器
〃定义数码管选择输出寄存器
〃定义显示数据寄存器
〃定义计数寄存器
〃输出数码管选择assignseg=seg_r;
always@(posedgeclk_lk)
count<
=count+1'
bl;
case(count)
3*d0:
disp_dat=d[31:
28];
3*dl:
disp_dat=d[27:
24];
3*d2:
disp_dat=d[23:
20];
3'
d3:
disp_dat=d[19:
16];
3*d4:
disp_dat=d[15:
12];
d5:
disp_dat=d[ll:
8];
3*d6:
disp_dat=d[7:
4];
d7:
disp_dat=d[3:
0];
3,d0:
dig_r=8,b01111111;
3,dl:
dig_r=8'
bl0111111;
3,d2:
bll011111;
3,d3:
dig_r=8,blll01111;
3,d4:
bllll0111;
3,d5:
dig_r=8,blllll011;
3,d6:
dig_r=8,bllllll01;
3,d7:
blllllll0;
always@(disp_dat)
case(disp_dat)
4'
h0:
seg_r=8*hc0;
hl:
seg_r=8*hf9;
4*h2:
seg_r=8*ha4;
4*h3:
seg_r=8*hb0;
//输出数码管译码结果
〃定义上升沿触发进程
〃选择扫描显示数据
〃第一个数码管
〃第二个数码管
//第三个数码管
//第四个数码管
〃第五个数码管
〃第六个数码管
//第七个数码管
〃第八个数码管
〃选择数码管显示位
〃选择第一个数码管显示
〃选择第二个数码管显示
〃选择第三个数码管显示
〃选择第四个数码管显示
〃选择第五个数码管显示
〃选择第六个数码管显示
〃选择第七个数码管显示
〃选择第八个数码管显示
〃七段译码
〃显示0
〃显示1
〃显示2
〃显示3
h4:
seg_r=8*h99;
〃显示4
h5:
seg_r=8'
h92;
〃显示5
h6:
h82;
〃显示6
h7:
hf8;
〃显示7
h8:
h80;
〃显示8
h9:
h90;
〃显示9
ha:
h88;
〃显示a
hb:
h83;
〃显示b
hc:
hc6;
〃显示C
hd:
seg_r=8*hal;
〃显示d
he:
h86;
〃显示e
hf:
h8e;
〃显示f
1.说出数码管动态显示的原理。
每一位都是将8个发光二极管(下面简称LED)的负极接在一块,就有8个负极,接上8个10□,这个就是位选,相应I。
口输出低电平算是选通该位。
相同字段LED的正极连在一起,也有八根线,接上8个I。
口,这就是段选,相应10口输出高电平算是选通该段。
实验六按键去抖动实验
学习按键去抖动电路的硬件设计。
本实验的内容是建立按键消抖模块,对比有加消抖模块和没加消抖模块电路的区别。
三、实验原理作为机械开关的键盘,在按键操作时,机械触点的弹性及电压突跳等
原因,在触点或开启的瞬间会出现电压抖动。
启动QuartusII建立一个空白工程并命名。
将电路用VerilogVHDL语言描述出来,并扩展多个通道。
从设计文件创建模块,由debounce.v生成命名为debounce.vbsfo4:
其他步参考顶层模块原理图。
〃按键消抖模块
moduledebounce(clk,key_in,key_out);
inputelk;
//系统时钟输入
〃按键消抖输出
assignkey_out=(doutlIdout2Idout3);
always@(posedgeelk)begin
doutl<
=key_in;
dout2<
=doutl;
dout3<
=dout2;
endendmodule
(posedgeelk)begin
doutl<
=key_in;
//非阻塞赋值
dout2<
=doutl;
dout3<
=dout2;
end//其RTL描述为:
always©
(posedgeelk)
doutl=key_in;
//阻塞赋值
dout2=doutl;
dout3=dout2;
end//其RTL描述为:
实验七硬件电子琴实验
I、实验目的
学习利用蜂鸣器和按键设计硬件电子琴。
在SmartSOPC实验箱上的实现一个简单的电子琴。
由于组成乐曲的每个音符的频率值及其持续时间是乐曲演奏的2个基本数据,因此需要控制输出到扬声器的激励信号的频率高低和该频率信号持续的时间。
在QuartusII中建立一个工程项目文件,输入程序代码并保存。
选择目标器件并对相应的引脚进行锁定。
3:
对该工程文件进行全程编译处理,若在编译过程中发现错误,则找
出并更改,直至编译成功为止。
打开电源,执行下载命令。
default:
count_end=16'
hffff;
endcaseend
assignbeep=beep_r;
assignled=key_r;
1.举例说明产生不同音符的原理。
由于组成乐曲的每个音符的频率值及其持续时间是乐曲演奏的2个基本数据,因此需要控制输出到扬声器的激励信号的频率高低和该频率信号持续的时间。
频率的高低决定了音调的高低,而乐曲的简谱与各音名的频率关系是对应的,只要求出对应的分频分数,这样利用程序可以很轻松的得到相应的乐声。
实验八数字时钟设计
学习数字时钟的硬件设计。
在SmartSOPC试验箱上完成一个可以计时的数字时钟,其显示时间
范围是00:
00:
00-23:
59:
59
一个完整的时钟应由3部分组成,秒脉冲发生电路,计数显示部分和时钟调整部分。
本实验的校时电路在此仅仅完成了暂停,清零的基本功能。
在QuartusII中建立一个工程项目文件。
对该工程文件进行全程编译处理。
硬件连接,下载程序。
moduleclock(clk,key,dig,seg);
input[l:
O]key;
reg[24:
0]count;
reg[23:
0]hour;
regsec,keyen;
reg[1:
0]dout1,dout2,dout3;
wire[l:
0]key_done;
assignseg=seg_r;
〃秒信号产生部分
always@(posedgeelk)
count=count+1'
if(count==25^24000000)
count=25'
dO;
sec=〜sec;
〃按键消抖处理部分
〃模块名clock
〃输入按键
〃数码管选择输出引脚
〃定义现在时刻寄存器
〃定义标志位
〃寄存器
〃输出数码管选择
〃输出数码管译码结果
〃定义clock上升沿触发
//0.5S到了吗?
〃计数器清零
〃置位秒标志
//按键消抖输出
assignkey_done=(doutlIdout2Idout3);
always@(posedgecount[17])
=key;
always@(negedgekey_done[0])
keyen=〜keyen;
〃数码管动态扫描显示部分
case(count[17:
15])
disp_dat=hour[3:
disp_dat=hour[7:
d2:
disp_dat=4'
ha;
disp_dat=hour[ll:
disp_dat=hour[15:
disp_dat=hour[19:
disp_dat=hour[23:
case(count[17:
3,dO:
dig_r=8,blllllllO;
blll01111;
b01111111;
〃将琴键开关转换为乒乓开关
//count[17:
15]大约1ms改变一次
〃秒个位
〃秒十位
〃显示
〃分个位
//分十位
//时个位
〃时十位
seg_r=8*hcO;
hf9;
h2:
h3:
hbO;
h99;
/
hbf;
seg_r=8'
hff;
if((count[17:
15]==3'
d2)&
sec)
always@(negedgesecornegedgekey_done[l])//
if(!
key_done[l])
hour=24'
hO;
elseif(!
keyen)
hour[3:
0]=hour[3:
0]+1'
if(hour[3:
0]==4'
ha)
0]=4'
hour[7:
4]=hour[7:
4]+1'
if(hour[7:
4]==4'
h6)
4]=4'
hour[ll:
8]=hour[U:
8]+1'
if(hour[ll:
8]==4'
8]=4'
h0;
hour[15:
12]=hour[15:
12]+1'
if(hour[15:
12]==4*h6)
12]=4'
hour[19:
16]=hour[19:
16]+1'
if(hour[19:
16]==4'
16]=4*h0;
hour[23:
20]=hour[23:
20]+1'
if(hour[23:
16]==8'
h24)
hour[23:
16]=8'
1.自己动手添加校时程序,
reg[24:
reg[1:
0]dout1,dout2,dout3;
wire[1:
0]key_done;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 技术 应用 实验 报告 参考答案 docx
![提示](https://static.bingdoc.com/images/bang_tan.gif)