电子信息工程 eda实验讲义

上传人:第*** 文档编号:33610328 上传时间:2018-02-16 格式:DOC 页数:41 大小:1.88MB
返回 下载 相关 举报
电子信息工程 eda实验讲义_第1页
第1页 / 共41页
电子信息工程 eda实验讲义_第2页
第2页 / 共41页
电子信息工程 eda实验讲义_第3页
第3页 / 共41页
电子信息工程 eda实验讲义_第4页
第4页 / 共41页
电子信息工程 eda实验讲义_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《电子信息工程 eda实验讲义》由会员分享,可在线阅读,更多相关《电子信息工程 eda实验讲义(41页珍藏版)》请在金锄头文库上搜索。

1、1第四章 可编程逻辑设计实验实验一 流水灯【实验目的】通过本实验让学生进一步了解、熟悉和掌握 CPLD/FPGA 开发软件的使用方法及Verilog HDL 语言的编程方法;学习简单的时序电路的设计和硬件测试。【实验内容】本实验的内容是控制实验箱上的发光二极管 LED1LED8,使之实现流水灯显示。【实验原理】在 LED1LED8 引脚上周期性地输出流水数据,即输出的数据依次为11111111、11111110、11111100、11111000、11110000、11100000、11000000、10000000、00000000,如此循环显示,输出数据“0” ,表示点亮相应的 LED 小

2、灯。为了方便观察,流水的速率控制在 2Hz 左右。在核心板上有一个 48MHz 的标准时钟源,该时钟源与芯片EP2C5 的 23 脚相连。为了产生 2Hz 的时钟源,在此调用了分频模块 int_div。LED 与 FPGA 的连接原理图如图 4.1-1 所示。图 4.1-1 LED 与 FPGA 的连接原理图【实验步骤】(1) 启动 Quartus II,建立一个空白工程,然后命名为 led_waterflow.qpf。(2) 新建 ledwater.vhd 源程序文件,源代码如下。然后进行综合编译。若在编译过程中发现错误,则找出并更正错误,直到编译成功为止。生产符号文件 ledwater.b

3、sf (File Create/_Update Create Symbol Files for Current File)。(3) 将实验模块库里的 int_div.v 和 int_div.bsf 拷贝到工程目录下。(4) 新建图形文件,命名为 led_waterflow.bsf 并保存。在空白处双击鼠标,打开symbol 对话框,在 symbol 对话框的左上角的 libraies 中,分别将 project 下的 ledwater 和int_div 模块放在图形文件 led_waterflow.bdf 中,加入输入 input、输出 output 引脚,双击各引脚符号,进行引脚命名。完整的

4、顶层模块原理图如下图 4.1-2 所示。双击 int_div 中的参2数框,并修改参数,如下图 4.1-3 所示。将 F_DIV 的值改为 24000000,F_DIV_WIDTH 的值改为 25,单击“确定”按钮保存修改的参数。图 4.1-2 流水灯顶层模块图 4.1-3 参数修改对话框如果在 led_waterflow.bdf 上不能看到参数设置框,在空白出右击鼠标,选择 Show Parameter Assignments 命令来显示参数设置框。(5) 将实验模块选择目标器件并对相应的引脚进行锁定,这里选择的器件为 Altera 公司的 Cyclone II 系列的 EP2C5Q208C

5、8,或者 Cyclone I 系列的 EP1C12Q240C8。引脚锁定方法如表 4.1-1 所列。(6) 将 led_waterflow.bdf 设置成顶层实体 Project Set as Top-level Entity。对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。(7) 把 JP20 的 led0led7 的跳帽插上,使发光二极管有效。下载程序到芯片上,观察流水灯的变化。更改分频模块的分频系数,并重新编译下载,观察流水灯的变化。表 4.1-1 引脚锁定方法3信号 引脚EP1C12 信号 引脚EP1C12Led0 50 Led5 47Led1

6、 53 Led6 48Led2 54 Led7 49Led3 55 clock 28Led4 176【流水灯程序参考程序】module ledwater(led,clk); /模块名 ledwateroutput7:0 led; /定义 LED 输出口input clk; /定义时钟输入口reg8:0led_r; /定义输出寄存器assign led = led_r7:0; /寄存器输出always (posedge clk) /过程beginled_r ”按钮添加所有节点,最后按下“ok”按钮。在空白处双击鼠标左键21图 4.6-4 添加节点 波形编辑器默认的仿真结束时间为 1us,根据仿真

7、需要可以设置仿真文件的结束时间。选择 Edit End Time 命令可以更改。这里采用默认值不需更改。图 4.6-5 添加完节点的波形图 编辑输入节点的波形。编辑时将使用到波形编辑工具栏中的各种工具。下图 4.6-6显示了工具栏中各种工具的功能。22图 4.6-6 波形编辑器工具条 在 Quartus II 主界面下选择 Processing Simulator Tool 命令,弹出如下图 4.6-7对话框。按下图步骤进行选择和设置 观察仿真结果是否与设计相符合,如果不符合,须重新设计文件,再进行综合编译、仿真,直到仿真结果与设计相符为止。图 4.6-7 仿真设置对话框23图 1 位全加器仿

8、真波形图(4)选择目标器件并对相应的引脚进行锁定,这里选择的器件为 Altera 公司的Cyclone I 系列的 EP1C12Q240C8。引脚锁定方法如下表 4.6-1 所列。表 4.6-1 引脚锁定方法引脚 引脚信号EP1C12 信号 EP1C12Led0 50 Key0 121Led1 53 Key1 122Led2 54 Key2 123sum 48 cout 49(5)P6 是一个 3 针的插座,如果把短接帽接到下面,使下面两个插针短接,则按键有效;如果把短接帽接到上面,使上面两个插针短接,则矩阵键盘有效。本实验令按键有效,把短接帽接到下面。把 JP20 的 LED1LED8 的跳

9、帽插上,使发光二极管有效。下载程序,按下 KEY1KEY3,观察发光二极管 LED1LED3、LED7、LED8 的状态。【参考程序】(1)module fulladd1(a,b,cin,sum,cout); /1 位全加器input a,b,cin; /输入端口output sum,cout; /输出端口wire s1,t1,t2,t3;and (t1,a,cin),(t2,b,cin),(t3,a,b);xor (s1,a,b),(sum,s1,cin);or (cout,t1,t2,t3);endmodule(2)module fulladd(a,b,cin,sum,cout); /1

10、位加器input a,b,cin; /输入端口output sum,cout; /输出端口assign cout,sum = a + b +cin;endmodule24实验七 异步收发(UART)模块【实验目的】(1)学习使用 FPGA 设计一个通用异步收发器(UART);(2)学习使用 LA1532 逻辑分析仪的 UART 插件进行分析。【实验内容】本实验的内容是设计通用异步收发器(UART)。利用 Quartus II 完成设计、仿真等工作,然后通过 SmartSOPC 实验箱上的 RS232 接口和 PC 机联机进行硬件测试和分析, RS232 的硬件原理如图 1 26 所示。最后通过

11、 KEY1KEY2 输入要发送的数据,并显示于数码管12,按 KEY3 发送数据到 PC 机,通过串口调试软件显示由 FPGA 发送的数据;由 PC机发送到 FPGA 的数据显示数码管 7/8。数据的输入、显示等操作由本实验提供的一个测试模块(uart_test) 完成(参见图 4.7-5) ,用户可以自行分析该测试模块,这里主要介绍UART 模块的设计。本实验以 48 MHz 晶振产生的频率为例,以波特率为 9 600、8 位数据、1 位停止位的格式进行数据传输。【实验原理】UART 即 Universal Asynchronous Receiver Transmkter意为通用异步收发器,

12、是一种应用广泛的短距离串行传输接口。下面简单介绍数据传输的基本原理。由于波特率为 9600 的一个信息位所需要的时间为 1 s/9600=104l0-6s,也就是说要每隔 104s 发送一位数据,且发送的数据要符合串行数据的格式。串行通信的数据格式如图 4. 7-1 所示。首先发起始位低电平,接着 DOD7 发送 8 位数据,最后发送停止位的高电平。图 4. 7- 1 基本 UART 较格式串行数据发送的结构如图 4. 7-2 所示,由基准时钟模块产生一个 104s 的时间,当要发送数据时,串行数据发送控制器把数据总线上的内容加上起始和停止位,然后进行移位发送。图 4.7-2 串行数据发送结构

13、图当使用 48 MHz 的振蔼频率时,要求波特率为 9600 的计数周期数目为( 1/9 600)(1/4810 6)=5000也就是说波特率基准的位时钟可以对 48 MHz 的晶振进行 5 000 次分频得到。串口数据接收的原理如图 4.7-3 所示。由基准时钟产生一个 16 倍于波特率的额率,这25样就把一个位的数据分成 16 份了。若检测到起始位的下降沿,就开始进行数据采样。采样的数据为一个位的第 6、7、8 三个状态,然后三个中取两个以上相同的值作为采样的结果,这样可以避免干扰。当起始位的采样结果不是 0 时就判定为接收为错,把串行数据接收控制器的位计数器复位。当接收完 10 位数据后

14、就进行数据的输出,并把串行数据接收控制器的位计数器复位,等待下一数据的到来。UART 接收的帧时序图如图 4.7-4 所示。图 4.7-3 串行接收原理图 图 4.7-4 基本 UART 帧时序图产生的基准时钟频率为 9 60016 =153600 Hz.当使用 48 MHz 振荡频率时,要求153600 Hz 的计数周期数目为(1/153600)/(1/48106)=312.5也就是说波特率基准的位时钟可以由对 48 MHz 的晶振进行 312.5 次分频得到。鉴于小数分频操作起来比较麻烦,所以这里进行取整,取 312 次分频,当然这样会存在一定的误差,但只要不超过最大允许误差(约5%)即可

15、。【实验步骤】(1) 启动 Quartus II 建立一个空白工程,然后命名为 uart.qpf。(2) 新建 VerilogHDL 源程序文件 rec.v 和 send.v,写出程序代码并保存, (Verilog HDL程序参考程序清单) ,进行综合编译。若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。(3)建立波形仿真文件并进行仿真验 芷。(4)将光盘中 EDA_Component 目录下的 uart_test. bsf、uart_test. v 拷贝到工程目录。(5)新建图形设计文件进行硬件测试,命名为 uart. bdf 并保存。其模块原理图如图 4.7-5 所示。26VC

16、Cclk INPUTVCCkey2.0 INPUTVCCRXD INPUTTIOUTPUTRIOUTPUTTXDOUTPUTTXDclkoutOUTPUTseg7.0OUTPUTdig7.0OUTPUTRXDclkoutOUTPUTcout 312Parameter ValueclkRXD clkoutRIDataout7.0recinstcout 5000Parameter ValueWRDatain7.0clkclkoutTXDTIsendinst1clockkey2.0rdata7.0 wensdata7.0seg7.0dig7.0uart_testinst2图 4.7-5 UART 测试顶层模块原理图(6)选择目标器件并对相应的引脚进行锁定,在这里所选择的器件

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号