EDA实验箱实验指导书

2019-03-09 16:11

实验二 流水灯

1. 实验目的

通过本实验让学生进一步了解、熟悉和掌握CPLD/FPGA开发软件的使用方法及VHDL语言的编程方法;学习简单的时序电路的设计和硬件测试。

2. 实验内容

本实验的内容是控制实验箱上的发光二极管LED1—LED8,使之实现流水灯显示。 3. 实验原理

在LED1~LED8引脚上周期性地输出流水数据,即输出的数据依次为11111111、11111110、11111100、11111000、11110000、11100000、11000000、10000000、00000000,如此循环显示,输出数据“0”,表示点亮相应的LED小灯。为了方便观察,流水的速率控制在2Hz左右。在核心板上有一个48MHz的标准时钟源,该时钟源与芯片EP2C5的23脚相连。为了产生2Hz的时钟源,在此调用了分频模块int_div。

4. 实验步骤

(1) 启动Quartus II,建立一个空白工程,然后命名为led_waterflow.qpf。

(2) 新建ledwater.vhd源程序文件,源代码如下。然后进行综合编译。若在编译过程中发现错误,则找出并更正错误,直到编译成功为止。生产符号文件ledwater.bsf (File→ Create/_Update → Create Symbol Files for Current File)。 流水灯程序参考

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_Arith.ALL; USE IEEE.STD_LOGIC_Unsigned.ALL; ENTITY ledwater IS PORT(

clk: IN STD_LOGIC;

led: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END;

ARCHITECTURE one

SIGNAL BEGIN

led<=led_r(7 DOWNTO 0); PROCESS(clk) BEGIN

IF clk’event and clk=’1’ THEN

led_r<=led_r(7 DOWNTO 0) & '0';

IF led_r=\ --循环完毕吗?

led_r<=\ --是,则重新赋初值

END IF;

OF ledwater

IS

led_r:STD_LOGIC_VECTOR(8 DOWNTO 0);

END IF; END PROCESS;

END;

(3) 将实验模块库里的int_div.vhd和int_div.bsf拷贝到工程目录下。

1

(4) 新建图形文件,命名为led_waterflow.bdf并保存。在空白处双击鼠标,打开symbol对话框,在symbol对话框的左上角的libraies中,分别将project下的ledwater和int_div模块放在图形文件led_waterflow.bdf中,加入输入input、输出output引脚,双击各引脚符号,进行引脚命名。完整的顶层模块原理图如下图1所示。双击int_div中的参数框,并修改参数,如下图2所示。将F_DIV的值改为24000000,F_DIV_WIDTH的值改为25,单击“确定”按钮保存修改的参数。

图 流水灯顶层模块

图 参数修改对话框

如果在led_waterflow.bdf上不能看到参数设置框,在空白出右击鼠标,选择Show Parameter Assignments命令来显示参数设置框。

(5) 将实验模块选择目标器件并对相应的引脚进行锁定,这里选择的器件为Altera公司的Cyclone II系列的EP2C5Q208C8,或者Cyclone I系列的EP1C12Q240C8。引脚锁定方法如下表所列。

(6) 将led_waterflow.bdf设置成顶层实体Project→ Set as Top-level Entity。对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。

(7) 把JP20的led0~led7的跳帽插上,使发光二极管有效。下载程序到芯片上,观察流

2

水灯的变化。更改分频模块的分频系数,并重新编译下载,观察流水灯的变化。

表 引脚锁定方法 信号 EP2C5 Led[0] Led[1] Led[2] Led[3] Led[4] 116 110 114 107 112 引脚 EP1C12 128 127 126 125 124 Led[5] Led[6] Led[7] clock 信号 EP2C5 105 63 106 23 引脚 EP1C12 123 122 121 153

3

实验三 读取按键信号

1. 实验目的

通过本实验让学生进一步了解、熟悉和掌握CPLD/FPGA开发软件的使用方法及VHDL语言的编程方法;并熟悉VHDL文件为顶层模块的设计;学习和体会分支条件语句case的使用方法及FPGA I/O口的输出控制。

2. 实验内容

实验箱上有8个发光二极管LED1~LED8和8个按键KEY1~KEY8。本实验的内容是用这8个按键分别控制8个发光二极管,一旦有键按下,则点亮相应的发光二极管。

3. 实验原理

FPGA的所有I/O控制块允许每个I/O引脚单独配置为输入口,不过这种配置是系统自动完成的。当该I/O口被设置为输入口使用时(如定义key1为输入引脚:input),该I/O控制块将直接使三态缓冲的控制端接地,使得该I/O引脚对外呈高阻态,这样该I/O引脚即可用作专用输入引脚。正确分配并锁定引脚后,一旦在KEY1~KEY8中有键输入,即可在检测到键盘输入的情况下,继续判断其键盘并作出相应的处理。

4. 实验步骤

(1) 启动Quartus II,建立一个空白工程,然后命名为key_led.qpf。

(2) 新建key_led.vhd源程序文件,源代码如下。然后进行综合编译。若在编译过程中发现错误,则找出并更正错误,直到编译成功为止。 程序参考

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_Arith.ALL; USE IEEE.STD_LOGIC_Unsigned.ALL; ENTITY keyled

PORT(

key: led: );END;

ARCHITECTURE one OF keyled IS

SIGNAL led_r: STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL buffer_r:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN led<=led_r;

PROCESS(key,buffer_r) BEGIN

buffer_r<=key; CASE buffer_r IS

WHEN \led_r<=\ WHEN \led_r<=\ WHEN \led_r<=\ WHEN \led_r<=\ WHEN \led_r<=\ WHEN \led_r<=\

4

IN

STD_LOGIC_VECTOR(7 DOWNTO 0); OUT STD_LOGIC_VECTOR(7 DOWNTO 0)

IS

WHEN \led_r<=\ WHEN \led_r<=\ WHEN

OTHERS=>

led_r<=\

END CASE; END PROCESS;

END;

(3) 选择目标器件并对相应的引脚进行锁定,这里选择的器件为Altera公司的Cyclone II系列的EP2C5Q208C8,或者Cyclone I系列的EP1C12Q240C8。引脚锁定方法如下表所列。

表引脚锁定方法

信号 Led[0] Led[1] Led[2] Led[3] Led[4] Led[5] Led[6] Led[7] 引脚 EP2C5 116 110 114 107 112 105 63 106 EP1C12 信号 Key[0] Key[1] Key[2] Key[3] Key[4] Key[5] Key[6] Key[7] 引脚 EP2C5 56 59 57 61 58 64 60 68 EP1C12

(4) 对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。

(5) JP6是一个3针的插座,如果把短接帽接到下面,使下面两个插针短接,则按键有效;如果把短接帽接到上面,使上面两个插针短接,则矩阵键盘有效。本实验令按键有效,把短接帽接到下面。把JP20的led0~led7的跳帽插上,使发光二极管有效。下载程序到芯片上,按下KEY1~KEY8的任何一键,观察发光二极管LED1~LED8的亮灭状态。

5


EDA实验箱实验指导书.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中铁快运工程施工组织设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: