ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:53.86KB ,
资源ID:24563904      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24563904.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(EDA技术及应用实验报告.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

EDA技术及应用实验报告.docx

1、EDA技术及应用实验报告EDA技术及应用实验报告系 部: 电子通信工程系 指导教师: 张松炜 学 号: 081307229 姓 名: 吴坤杰 同 组 人: 吴东辉 文付华 二一 一 年 十一 月 五 日实验一 点亮LED设计一、实验目的通过此试验可以让大家逐步了解,熟悉和掌握FPGA开发软件Quartus II的使用方法及VerilogHDL的编程方法。二、实验内容本实验是一个简单的点亮LED灯的实验,具体包括:1) 使用Quartus II建立一个工程;2) Quartus II工程设计;3) 设置编译选项并编译硬件系统;4) 下载硬件设计到目标FPGA;5) 观察LED的状态;三、实验原理

2、和单片机一样,向片子里写进数据,输出高电平(对于共阴极的),或者输出低电平(对于共阳极)。根据Cyclone片子已经分配好的针脚设置好针脚。四、实验步骤建立-个工程-输入程序-软件编译-生成下载文件-下载调试。五、实验程序module led1(led); /模块名led1output7:0 led; /定义输出端口reg7:0 led; /定义寄存器always /过程1begin led = 8b10101010; /输出0xAAendendmodule六、思考题(1)写出使用QuartusII软件开发工程的完整的流程。建立一个工程输入程序软件编译综合生成下载文件下载硬件调。实验二流水灯实

3、验一、 实验目的通过此试验让大家进一步了解熟悉和掌握FPGA开发软件的使用方法及软件编程方法。学习简单的时序电路的设计和硬件测试。二、实验内容本实验的内容是建立用于控制LED流水灯的简单硬件电路,要求在SmartSOPC上实现LED1-LED8发光二极管流水灯的显示。三、实验原理这里的显示用分频模块(int_div)得到的较低的始终作为信号,在此时钟下,对输入数据进行移位,就得到了流水灯的效果。四、实验步骤建立工程输入源程序调用模块生成符号调用符号连成电路图编译下载调试五、实验程序原理图六、思考题1.本实验顶层采用了图形输入的方式,若采用文本输入方式,如何编写顶层文件?写出相应程序。modul

4、e led2(clock,led);input clock;output 7:0led;wire p;int_div u1( .clock(clock),.clk_out(p);ledwater u2(.clk(p),.led(led);endmodule实验三 键盘、LED发光实验一、实验目的本实验的主要目的是联系顶层模块的设计。学习和体会分支条件语句case的使用及FPGA的I/O控制。二、实验内容用跳线把key1-key8和指定的引脚连起来,以实现功能控制。三、实验原理FPGA的所有的I/O控制块允许每个引脚单独的配置为输入口。只要配置正确,则一暗淡几个键中有键输入,在检测到键盘输入的情

5、况下,继续判断其键盘值并作出相应的处理。四、实验步骤1:按以前的步骤建立工程,并按说明书进行配置引脚,未用的按三态处理。2:对文件进行编译,并检错。3:按说明短接跳帽和连接跳线。4:观察输入情况。五、实验程序module keyled(key,led); /模块名keyledinput7:0 key; /定义键盘输入口output7:0 led; /定义发光管输出口reg7:0 led_r; /定义寄存器reg7:0 buffer_r;assign led = led_r; /输出键值always(key) /过程1begin buffer_r = key; /读取键值 case(buffer

6、_r) 8b11111110:led_r = 8b11111110; /是键KEY1,则给寄存器赋值0xfe 8b11111101:led_r = 8b11111100; /是键KEY2,则给寄存器赋值0xfc 8b11111011:led_r = 8b11111000; /是键KEY3,则给寄存器赋值0xf8 8b11110111:led_r = 8b11110000; /是键KEY4,则给寄存器赋值0xf0 8b11101111:led_r = 8b11100000; /是键KEY5,则给寄存器赋值0xe0 8b11011111:led_r = 8b11000000; /是键KEY6,则给

7、寄存器赋值0xc0 8b10111111:led_r = 8b10000000; /是键KEY7,则给寄存器赋值0x80 8b01111111:led_r = 8b00000000; /是键KEY8,则给寄存器赋值0x00 default: led_r = 8b11111111; /否则给寄存器赋值0xff endcaseendendmodule六、思考题1.能否用if语句改写本实验程序?如果能,写出相应程序。module keyled(key,led); /模块名keyledinput7:0 key; /定义键盘输入口output7:0 led; /定义发光管输出口reg7:0 led_r;

8、 /定义寄存器reg7:0 buffer_r;assign led = led_r; /输出键值always(key) /过程1begin buffer_r = key; /读取键值 if (buffer_r=8b11111110) led_r = 8b11111110; else if (buffer_r=8b11111101) led_r = 8b11111100; else if (buffer_r=8b11111011) led_r = 8b11111000; else if (buffer_r=8b11110111) led_r =8b11110000; else if (buffe

9、r_r=8b11101111) led_r = 8b11100000; else if (buffer_r=8b10111111) led_r = 8b10000000; else (buffer_r=8b01111111) led_r = 8b00000000; endendmodule实验四 静态数码管显示实验一、 实验目的学习LPM兆模块的调用。二、实验内容建立7段译码显示模块,用于控制LED数码管的静态显示。要求在实验箱上的数码管依显示09和个字符。三、实验原理本实验通过分频模块int_div 分频得到1HZ的频率信号,加载4位计数器的时钟输入端,计数循环输出0-9,A-F 16个数,

10、最后通过七段译码后在数码显示出来。四、实验步骤1:立源程序文件dec17s.v,输入程序代码并保存,并对此生成符号。2:添加LPM模块并按需要生成相应的文件。五、实验程序六、思考题1.本实验采用的是共阳极数码管,若采用共阴极数码管,有什么不同?答:对应显示相同的数时,输入的不同。2.如何显示HHHHHHHH和PPPPPPPP?答:H 对应的89h, P 对应的时73h;实验五 动态数码管显示实验一、实验目的学习动态扫描显示的原理图及电路的设计。二、实验内容1:在SmartSOPC试验箱上完成LED数码管的动态显示“1-8”个数字。2:放慢扫描速度演示动态显示的原理过程。三、实验原理虽然每次只有

11、一个LED显示,但只要扫描显示速率够快,由于人的视觉余辉效应,使我们仍会感觉所有的数码管都在同时显示。四、实验步骤1:建立一个空白工程,并命名。2:对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更改,直至编译成功为止。3:从设计文件创建模块。4:将光盘中EDA目录文件拷贝到工程目录。5:添加常量兆功能模块。五、实验程序module scan_led(clk_1k,d,dig,seg); /模块名scan_ledinput clk_1k; /输入时钟input31:0 d; /输入要显示的数据output7:0 dig; /数码管选择输出引脚output7:0 seg; /数码管

12、段输出引脚reg7:0 seg_r; /定义数码管输出寄存器reg7:0 dig_r; /定义数码管选择输出寄存器reg3:0 disp_dat; /定义显示数据寄存器reg2:0count; /定义计数寄存器assign dig = dig_r; /输出数码管选择assign seg = seg_r; /输出数码管译码结果 always (posedge clk_1k) /定义上升沿触发进程begin count = count + 1b1;endalways (posedge clk_1k) begin case(count) /选择扫描显示数据 3d0:disp_dat = d31:28

13、; /第一个数码管 3d1:disp_dat = d27:24; /第二个数码管 3d2:disp_dat = d23:20; /第三个数码管 3d3:disp_dat = d19:16; /第四个数码管 3d4:disp_dat = d15:12; /第五个数码管 3d5:disp_dat = d11:8; /第六个数码管 3d6:disp_dat = d7:4; /第七个数码管 3d7:disp_dat = d3:0; /第八个数码管 endcase case(count) /选择数码管显示位 3d0:dig_r = 8b01111111; /选择第一个数码管显示 3d1:dig_r =

14、8b10111111; /选择第二个数码管显示 3d2:dig_r = 8b11011111; /选择第三个数码管显示 3d3:dig_r = 8b11101111; /选择第四个数码管显示 3d4:dig_r = 8b11110111; /选择第五个数码管显示 3d5:dig_r = 8b11111011; /选择第六个数码管显示 3d6:dig_r = 8b11111101; /选择第七个数码管显示 3d7:dig_r = 8b11111110; /选择第八个数码管显示 endcase endalways (disp_dat)begin case(disp_dat) /七段译码 4h0:s

15、eg_r = 8hc0; /显示0 4h1:seg_r = 8hf9; /显示1 4h2:seg_r = 8ha4; /显示2 4h3:seg_r = 8hb0; /显示3 4h4:seg_r = 8h99; /显示4 4h5:seg_r = 8h92; /显示5 4h6:seg_r = 8h82; /显示6 4h7:seg_r = 8hf8; /显示7 4h8:seg_r = 8h80; /显示8 4h9:seg_r = 8h90; /显示9 4ha:seg_r = 8h88; /显示a 4hb:seg_r = 8h83; /显示b 4hc:seg_r = 8hc6; /显示c 4hd:se

16、g_r = 8ha1; /显示d 4he:seg_r = 8h86; /显示e 4hf:seg_r = 8h8e; /显示f endcaseendendmodule六、思考题1.说出数码管动态显示的原理。数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打

17、开,该位就显示出字形。实验六 按键去抖动实验一、实验目的学习按键去抖动电路的硬件设计。二、实验内容本实验的内容是建立按键消抖模块,对比有加消抖模块和没加消抖模块电路的区别。三、实验原理作为机械开关的键盘,在按键操作时,机械触点的弹性及电压突跳等原因,在触点或开启的瞬间会出现电压抖动。四、实验步骤1:启动QuartusII建立一个空白工程并命名。2:将电路用Verilog VHDL语言描述出来,并扩展多个通道。3:从设计文件创建模块,由debounce.v生成命名为debounce.vbsf。4:其他步参考顶层模块原理图。五、实验程序module debounce(clk,key_in,key_

18、out); /按键消抖模块input clk; /系统时钟输入inputKEY_WIDTH-1:0 key_in; /外部按键输入outputKEY_WIDTH-1:0key_out; /按键消抖输出regKEY_WIDTH-1:0dout1,dout2,dout3; /寄存器 parameter KEY_WIDTH = 8; /参数assign key_out = (dout1 | dout2 | dout3); /按键消抖输出always (posedge clk)begin dout1 = key_in; dout2 = dout1; dout3 = dout2; endendmodul

19、e六、思考题1.比较下面两段程序的异同,并画出电路结构图.always ( posedge clk)begin dout1=key_in; /非阻塞赋值 dout2=dout1; dout3=dout2;endalways ( posedge clk)begin dout1=key_in; /阻塞赋值 dout2=dout1; dout3=dout2;End电路图如下:实验七 硬件电子琴实验一、实验目的学习利用蜂鸣器和按键设计硬件电子琴。二、实验内容在SmartSOPC实验箱上的实现一个简单的电子琴。三、实验原理由于组成乐曲的每个音符的频率值及其持续时间是乐曲演奏的2个基本数据,因此需要控制输

20、出到扬声器的激励信号的频率高低和该频率信号持续的时间。四、实验步骤1:在QuartusII中建立一个工程项目文件,输入程序代码并保存。2:选择目标器件并对相应的引脚进行锁定。3:对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更改,直至编译成功为止。4:打开电源,执行下载命令。五、实验程序module beep1(clk,key,beep,led); /模块名称beep input clk; /系统时钟48MHz input7:0key; /按键输入output beep; /蜂鸣器输出端 output7:0led; /LED输出reg beep_r; /寄存器reg15:0co

21、unt,count_end;reg7:0key_r;always(posedge clk)begin count = count + 1b1; /计数器加1 if(count = count_end)&(!(count_end = 16hffff) begin count = 16h0; /计数器清零 beep_r = !beep_r; /取反输出信号 endendalways (key)begin key_r = key; /取键值 case(key_r) 8b11111110:count_end = 16hb327; /中音1的分频系数值 8b11111101:count_end = 16

22、h9fa0; /中音2的分频系数值 8b11111011:count_end = 16h8e32; /中音3的分频系数值 8b11110111:count_end = 16h8637; /中音4的分频系数值 8b11101111:count_end = 16h7794; /中音5的分频系数值 8b11011111:count_end = 16h6a88; /中音6的分频系数值 8b10111111:count_end = 16h5ee8; /中音7的分频系数值 8b01111110:count_end = 16h59ab; /高音1的分频系数值 8b01111101:count_end = 1

23、6h4fce; /高音2的分频系数值 8b01111011:count_end = 16h471a; /高音3的分频系数值 8b01110111:count_end = 16h431c; /高音4的分频系数值 8b01101111:count_end = 16h3bca; /高音5的分频系数值 8b01011111:count_end = 16h3544; /高音6的分频系数值 8b00111111:count_end = 16h2f74; /高音7的分频系数值 default:count_end = 16hffff; endcaseendassign beep =beep_r; /输出音乐a

24、ssign led =key_r; /输出按键状态endmodule六、思考题1. 举例说明产生不同音符的原理。由于组成乐曲的每个音符的频率值及其持续时间是乐曲演奏的2个基本数据,因此需要控制输出到扬声器的激励信号的频率高低和该频率信号持续的时间。频率的高低决定了音调的高低,而乐曲的简谱与各音名的频率关系是对应的,只要求出对应的分频分数,这样利用程序可以很轻松的得到相应的乐声。实验八 数字时钟设计一、 实验目的学习数字时钟的硬件设计。二、实验内容在SmartSOPC试验箱上完成一个可以计时的数字时钟,其显示时间范围是00:00:00-23:59:59三、实验原理一个完整的时钟应由3部分组成,秒

25、脉冲发生电路,计数显示部分和时钟调整部分。本实验的校时电路在此仅仅完成了暂停,清零的基本功能。四、实验步骤1:在QuartusII中建立一个工程项目文件。2:选择目标器件并对相应的引脚进行锁定。3:对该工程文件进行全程编译处理。4:硬件连接,下载程序。五、实验程序module clock(clk,key,dig,seg); /模块名clockinput clk; /输入时钟input1:0 key; /输入按键output7:0 dig; /数码管选择输出引脚output7:0 seg; /数码管段输出引脚reg7:0 seg_r; /定义数码管输出寄存器reg7:0 dig_r; /定义数码

26、管选择输出寄存器reg3:0 disp_dat; /定义显示数据寄存器reg24:0count; /定义计数寄存器reg23:0hour; /定义现在时刻寄存器reg sec,keyen; /定义标志位reg1:0dout1,dout2,dout3; /寄存器wire1:0key_done; /按键消抖输出assign dig = dig_r; /输出数码管选择assign seg = seg_r; /输出数码管译码结果 /秒信号产生部分always (posedge clk) /定义clock上升沿触发begin count = count + 1b1; if(count = 25d2400

27、0000) /0.5S到了吗? begin count = 25d0; /计数器清零 sec = sec; /置位秒标志 endend/按键消抖处理部分assign key_done = (dout1 | dout2 | dout3); /按键消抖输出always (posedge count17)begin dout1 = key; dout2 = dout1; dout3 = dout2; endalways (negedge key_done0)begin keyen = keyen; /将琴键开关转换为乒乓开关end/数码管动态扫描显示部分always (posedge clk) /count17:15大约1ms改变一次begin case(count17:15) /选择扫描显示数据 3d0:disp_dat = hour3:0; /秒个位 3d1:disp_dat = hour7:4; /秒十位 3d2:disp_dat = 4ha;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1