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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

EDA技术及应用实验报告完整版纯手打Word文档格式.docx

1、4、下载硬件设计到目标 FPGA。将产生的 led_test.sof 输出对 FPGA 进行配置。5、观察 LED 的状态。五、实验程序/利用连续赋值assign 语句实现module led1(led);/ 模块名output7:0 led;assign led =8b10101010;/ 定义输出端口、/ 输出 0xAAendmodule/利用过程赋值语句实现(暂时已屏蔽)/*reg7:always/ 定义输出端口/ 定义寄存器/过程 1,无敏感变量beginled = 8/输出0xAAendendmudule*/六、思考题写出使用 QuartusII 软件开发工程的完整的流程。实验二流水

2、灯实验通过此实验让用户进一步了解、熟悉和掌握 CPLD/FPGA 开发软件的使用方法及 Verilog HDL 的编程方法。学习简单时序电路的设计和硬件测试。本实验的内容是建立可用于控制 LED 流水灯的简单硬件电路,要求在SmartSOPC实验箱上实现 LED1LED8 发光二极管流水灯显示。1、在 LED1LED8 引脚上周期性的输出流水数据,如原来输出的数据是 11111100 则表示点亮 LED1 、 LED2 ,流水一次后,输出的数据应该为 11111000,而此时则应点亮 LED1LED3 三个 LED 发光二极管 ,就可以实现 LED 流水灯。为了观察方便,流水速率最好在 2Hz

3、 左右。在 QuickSOPC 核心板上有一个 48MHz 的标准时钟源,该时钟脉冲 Clock 与芯片的 28 管脚相连。为了产生 2Hz 的时钟脉冲,在此调用了一个分频模块( int_div 模块,位于光盘中 EDA_Component 目录下),通过修改分频系数来改变输出频,当分频系数为24x106 时,输出即为2Hz 的频率信号。2、Int_div 分频模块说明: int_div 模块是一个占空比为 50%的任意整数分频器。输入时钟为 clock,输出时钟为 clk_out。其中 F_DIV 为分频系数,分频系数范围为 12n (n=F_DIV_WIDTH) , 若要 改 变 分 频

4、系 数, 改 变 参 数 F_DIV 和F_DIV_WIDTH 到相应范围即可。在本例中输入时钟为 48MHz ,要得到 2Hz 的信号,所以分频系数为 48x106/2=24x106;对于分频系数为 24x106 的数需要一个25位宽的计数器即可。1、启动 Quarters II 建立一个空白工程,命名为 led_water.qpf。2、新建 Verilog HDL 源程序文件 ledwater.v,输入程序代码并保存, 进行综合编译,若在编译中发现错误,则找出并更正错误,直至编译成功为止。3、从设计文件中创建模块,由 ledwater.v 生成名为 ledwater.bsf的模块符号文件。

5、4、将光盘中 EDA_Component 目录下的 int_div.bsf 和 int_div.v 拷贝到工程目录。5、新建图形设计文件命名为 led_water.bdf 并保存。在空白处双击鼠标左键,分别将 symbol 对话框中 libraries: project 下的 ledwater 和 int_div 模块放在图形文件led_water.bdf 中,加入输入、输出引脚,双击各管脚符号,进行管脚命名。双击 int_div的参数框,并修改参数,将 F_DIV 的值改为 24000000,F_DIV_WIDTH 的值改为25.完整的顶层模块原理图如下图所示。ParameterValueF

6、_DIV24000000F_DIV_WIDTH 25int_divledwaterclockINPUTclk_outclk led7.0OUTPUTled7.0VCCinst inst16、选择目标器件并进行引脚锁定。7、将 led_water.bdf 设置为顶层实体。对该工程文件进行全程编译处理。若在编译过程中发现错误,则找出并更正错误,直到编译成功为止。8、将产生的 led_water.sof输出对 FPGA 进行配置。9、更改分频模块( int_div )的分频系数,并重新编译下载,观察流水灯的变化。module ledwater (led,clk); output7: input cl

7、k;/ 模块名 ledwater/ 定义 LED 输出口/定义时钟输入口reg8:0 led_r;/定义输出寄存器assign led = led_r7:0;always (posedge clk)/ 寄存器输出/在时钟上升沿触发进程led_r = led_r 1;if(led_r = 9d0)= 9b111111111;/是,则输出左移一位/循环完毕吗?/ 是,则重新赋初值本实验顶层采用了图形输入的方式,若采用文本输入方式,如何编写顶层文件?写出相应程序。实验三 键盘、 LED 发光实验通过此实验让用户进一步了解、熟悉和掌握 CPLD/FPGA 开发软件的使用方法及 Verilog HDL

8、的编程方法,熟悉以 Verilog HDL 文件为顶层模块的设计。学习和体会分支条件语句 case的使用方法及 FPGA I/O 口的输出控制。SmartSOPC实验箱上有 8 个发光二极管 LED18 和 8 个按键 KEY1KEY8 。本实验的内容要求在 SmartSOPC 实验箱上完成对 8 个按键 KEY1KEY8控,一旦有按键输入判断其键值,并点亮相应的发光二极管,如若 KEY3进行监按下,则点亮LED1LED3发光二极管。FPGA 的所有 I/O 控制块允许每个 I/O 口引脚单独配置为输出口, 不过这种配置是系统自动完成的,一旦该 I/O 口被设置为输入口使用时(如定义 key0

9、 为输入引脚:input key0;)该 I/O 控制模块将直接使三态缓冲区的控制端接地, 使得该 I/O 口引脚对外呈高阻态,这样该 I/O 口引脚即可用作专用输入引脚。只要正确分配并锁定引脚后, 一旦在 KEY1KEY8 中有按键输入, 在检测到键盘输入的情况下,继续判断其键值并做出相应的处理。1、启动 Quarters II 建立一个空白工程,命名为 keyled.qpf。2、新建 Verilog HDL 源程序文件 keyled.v,输入程序代码并保存,进行综合编译,3、选择目标器件并进行引脚锁定。4、对该工程文件进行全程编译处理。若在编译过程中发现错误,则找出并更正错误,直到编译成功

10、为止。5、将产生的 keyled.sof 输出对 FPGA 进行配置。按下不同按键观察 LED 发光管的状态。module keyled(key,led);/模块名 keyledinput7:0key;/定义键盘输入口0led;/定义发光管输出口led_r;/定义寄存器buffer_r;assign led = led_r;/输出键值always(key)/过程 1buffer_r = key;/读取键值case(buffer_r)8b11111110:led_r = 8b11111110; / 是键 KEY1 ,则给寄存器赋值0xfeb11111101:b11111100; / 是键 KEY

11、2 ,则给寄存器赋值0xfcb11111011:b11111000; / 是键 KEY3 ,则给寄存器赋值0xf8b11110111:b11110000; / 是键 KEY4 ,则给寄存器赋值0xf0b11101111:b11100000; / 是键 KEY5 ,则给寄存器赋值0xe0b11011111:b11000000; / 是键 KEY6 ,则给寄存器赋值0xc0b10111111:b10000000; / 是键 KEY7 ,则给寄存器赋值0x80b01111111:b00000000; / 是键 KEY8 ,则给寄存器赋值0x00default: led_r = 8b11111111;

12、 / 否则给寄存器赋值 0xff endcase能否用 if 语句改写本实验程序?如果能,写出相应程序。实验四 静态数码管显示实验学习 7 段数码管显示译码器的设计,进一步了解、熟悉和掌握 FPGA 开发软件 Quartus II 的使用方法及 Verilog HDL 的编程方法,学习 LPM 兆功能模块的调用。SmartSOPC实验箱上有 2 个 4 位动态共阳极数码管 LED12 和 LED13 。其中 8 个位码 DIG0DIG7 和 8 位段码 SEG0SEG7分别与 FPGA 相应的引脚相连。这样,只要 DIG0DIG7 上一直输出低电平 “ 0,”则 8 个数码管将显示相同的数码

13、(因为 8个 LED 数码管的段码线分别接到了同一引脚上) ,这样 8 位动态的 LED 数码管就变成了静态的 LED 。本实验的内容是建立 7 段译码显示模块,用于控制 LED 数码管的静态显示。要求在 SmartSOPC实验箱上的数码管依次显示 09 和 AF16 个字符。数码管 LED 显示是工程项目中使用较广的一种输出显示器件。 常见的数码管有共阴和共阳 2 种。共阴数码管是将 8 个发光二极管的阴极连接在一起作为公共端,而共阳数码管是将 8 个发光二极管的阳极连接在一起作为公共端。公共端常被称作位码,而将其他的 8 位称作段码。数码管有 8 个段分别为: h、g、f、e、d、c、b

14、和 a( h 为小数点),只要公共端为高电平 “ 1,”某个段输出低电平 “ 0则”相应的段就亮。本实验通过分频模块 int_div 分频得到 1Hz 的频率信号,加载于 4 位计数器的时钟输入端,计数循环输出 09、AF16 个数。最后通过七段译码模块译码后在数码管上显示出来。1、启动 Quarters II 建立一个空白工程,命名为 sled.qpf。2、新建 Verilog HDL 源程序文件 decl7s.v,输入程序代码并保存,进行综合编译,3、从设计文件中创建模块,由 decl7s.v 生成名为 decl7s.bsf的模块符号文件。5、添加 4 位计数器兆功能模块。6、新建图形设计

15、文件命名为 sled.bdf 并保存。在空白处双击鼠标左键,分别将 symbol 对话框中 libraries: project 下的 counter、decl7s 和 int_div 模块放在图形文件 sled.bdf 中,在 symbol 对话框中 Name:输入 gnd,添加 gnd 符号。加入输入、输出引脚,双击各管脚符号, 进行管脚命名。 双击 int_div 的参数框,并修改参数,将 F_DIV 的值改为 48000000,F_DIV_WIDTH 的值改为 26。完整的顶层模块原理图如下图所示。Parameter ValueF_DIV 48000000OUTPUT dig7.0F_

16、DIV_WIDTH 26GND数码管位码输出counterdecl7sup counterclockclk_outseg7.0d3.0seg7.0q3.0数码管段码输出inst2inst17、选择目标器件并进行引脚锁定。8、将 sled.bdf 设置为顶层实体。若在编译过程中发现错误,则找出并更正错误,直到编译成功为止。9、将产生的 sled.sof 输出对 FPGA 进行配置。观察 LED 显示状态。module decl7s(d,seg); / 模块名 decl7sinput3:0 d; / 输入 4 位二进制码0 seg; / 七段译码输出0 seg_r; / 定义数码管输出寄存器ass

17、ign seg = seg_r; / 输出数码管译码结果always (d)case(d) /七段译码4h0:seg_r = 8hc0;h1:hf9;h2:ha4;h3:hb0;h4:h99;h5:h92;h6:h82;h7:hf8;h8:h80;h9:h90;ha:h88;hb:h83;hc:hc6;hd:ha1;he:h86;hf:h8e;/ 显示123456789abcdefendcase1.本实验采用的是共阳极数码管, 若采用共阴极数码管, 有什么不同?2.如何显示 HHHHHHHH 和 PPPPPPPP?实验五 动态数码管显示实验学习动态扫描显示的原理及电路的设计。本实验的内容是建立

18、数码管动态扫描显示模块,具体内容如下:1、在 SmartSOPC实验箱上完成 LED 数码管的动态显示 “ 18”8个数字;2、放慢扫描速度演示动态显示的原理过程。一个 FPGA 的片子如果带动多个(比如说 8 个)数码管,选用静态显示的话,管脚很容易不够用,于是大多采用动态显示的方式。本次采用共阳极的数码管,其中每个数码管的 8 个段: h、g、f 、e、 d、 c、 b 和 a(h 为小数点)都分别连接到 SEG0SEG7,8 个数码管分别由 8 个选通信号 DIG0DIG7 来选择。被选通的数码管显示数据,其余关闭。如果在某一时刻DIG2为低电平“0”,其余选通信号为高电平“1”,这时仅

19、对应的数码管显示来自段码信号端的数据,其余个数码管呈现关闭状态。根据这种电路状态,如果希望8 个数码管显示希望的数据,就必须使得 8 个选通信号 DIG0DIG7 分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫描就能实现扫描显示的目的。 虽然每次只有一个 LED 显示,但只要扫描显示速率足够快,由于人的视觉余辉效应,使我们仍会感觉所有的数码管都在同时显示。1、启动 Quarters II 建立一个空白工程,命名为 dled.qpf。2、新建 Verilog HDL 源程序文件 scan_led.v,输入程序代码并保存, 进行综合编译,3、从设

20、计文件中创建模块,由 scan_led.v生成名为 scan_led.bsf的模块符号文件。5、添加常量兆功能模块。6、新建图形设计文件命名为 dled.bdf 并保存。在空白处双击鼠标左键,分别将symbol 对话框中 libraries:project 下的 constant、scan_led和 int_div 模块放在图形文件 dled.bdf 中,加入输入、输出引脚,双击各管脚符号,进行管脚命名。双击int_div 的参数框,并修改参数,将 F_DIV 的值改为 48000, F_DIV_WIDTH 的值改为 16。48000F_DIV_WIDTH16scan_ledclk_1kdig7.0constantd31.0305419896328、将 dled.bdf 设置为顶层实体。观察 LED 数码管上的数字是否为“ 12345678”,然后把分频模块的参数改为 F_DIV:24000000,F_DIV_WIDTH:25 ,再重新编译下载, 观察这次 LED 数码管上的显示数据, 可以看到数据 “ 12345678”动起来了,这正是动态扫描的方法和过程。module scan_led(clk_1k,d,dig,seg); input clk_1k;input31:0 dig;0 dig_r;reg3:0 disp_dat;reg2:0count;assign dig

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

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