1、流水灯程序参考LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_Arith.ALL;USE IEEE.STD_LOGIC_Unsigned.ALL;ENTITY ledwater ISPORT(clk: IN STD_LOGIC;led: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END;ARCHITECTURE one OF ledwater ISSIGNAL led_r: STD_LOGIC_VECTOR(8 DOWNTO 0);BEGINled=led_r(7 DOWNTO 0);PROCES
2、S(clk)IF clkevent and clk=1THEN led_r=led_r(7 DOWNTO 0) & 0; IF led_r=000000000 THEN -循环完毕吗? led_r=111111111 -是,如此重新赋初值END IF;END PROCESS;(3)将实验模块库里的int_div.vhd和int_div.bsf拷贝到工程目录下。(4)新建图形文件,命名为led_waterflow.bdf并保存。在空白处双击鼠标,打开symbol对话框,在symbol对话框的左上角的libraies中,分别将project下的ledwater和int_div模块放在图形文件led
3、_waterflow.bdf中,参加输入input、输出output引脚,双击各引脚符号,进展引脚命名。完整的顶层模块原理图如如如下图1所示。双击int_div中的参数框,并修改参数,如如如下图2所示。将F_DIV的值改为24000000,F_DIV_WIDTH的值改为25,单击“确定按钮保存修改的参数。图 流水灯顶层模块图 参数修改对话框如果在led_waterflow.bdf上不能看到参数设置框,在空白出右击鼠标,选择Show Parameter Assignments命令来显示参数设置框。(5)将实验模块选择目标器件并对相应的引脚进展锁定,这里选择的器件为Altera公司的Cyclone
4、 II系列的EP2C5Q208C8,或者Cyclone I系列的EP1C12Q240C8。引脚锁定方法如下表所列。(6)Set as Top-level Entity。对该工程文件进展全程编译处理,假设在编译过程中发现错误,如此找出并更正错误,直至编译成功为止。(7)把JP20的led0led7的跳帽插上,使发光二极管有效。下载程序到芯片上,观察流水灯的变化。更改分频模块的分频系数,并重新编译下载,观察流水灯的变化。表 引脚锁定方法信号引脚EP2C5EP1C12Led0116128Led5105123Led1110127Led663122Led2114Led7106121Led3107125c
5、lock23153Led4112124实验三 读取按键信号并熟悉VHDL文件为顶层模块的设计;学习和体会分支条件语句case的使用方法与FPGA I/O口的输出控制。实验箱上有8个发光二极管LED1LED8和8个按键KEY1KEY8。本实验的容是用这8个按键分别控制8个发光二极管,一旦有键按下,如此点亮相应的发光二极管。FPGA的所有I/O控制块允许每个I/O引脚单独配置为输入口,不过这种配置是系统自动完成的。当该I/O口被设置为输入口使用时如定义key1为输入引脚:input,该I/O控制块将直接使三态缓冲的控制端接地,使得该I/O引脚对外呈高阻态,这样该I/O引脚即可用作专用输入引脚。正确
6、分配并锁定引脚后,一旦在KEY1KEY8中有键输入,即可在检测到键盘输入的情况下,继续判断其键盘并作出相应的处理。(1)启动Quartus II,建立一个空白工程,然后命名为key_led.qpf。(2)新建key_led.vhd源程序文件,源代码如下。程序参考ENTITY keyled ISkey: IN STD_LOGIC_VECTOR(7 DOWNTO 0);ARCHITECTURE one OF keyled IS STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL buffer_r:STD_LOGIC_VECTOR(7 DOWNTO 0);=led_r;PROCE
7、SS(key,buffer_r)buffer_r led_r11111111END CASE;(3)选择目标器件并对相应的引脚进展锁定,这里选择的器件为Altera公司的Cyclone II系列的EP2C5Q208C8,或者Cyclone I系列的EP1C12Q240C8。表引脚锁定方法Key056Key159Key257Key361Key458Key564Key660Key768(4)对该工程文件进展全程编译处理,假设在编译过程中发现错误,如此找出并更正错误,直至编译成功为止。(5)JP6是一个3针的插座,如果把短接帽接到下面,使下面两个插针短接,如此按键有效;如果把短接帽接到上面,使上面两
8、个插针短接,如此矩阵键盘有效。本实验令按键有效,把短接帽接到下面。把JP20的led0led7的跳帽插上,使发光二极管有效。下载程序到芯片上,按下KEY1KEY8的任何一键,观察发光二极管LED1LED8的亮灭状态。实验四 静态数码管显示通过本实验让学生学习7段数码管显示译码器的设计,进一步了解、熟悉和掌握FPGA开发软件Quartus II的使用方法与VHDL语言的编程方法,学习LPM兆功能模块的调用。实验箱上有2个4位动态共阳极数码管LEDD4和LEDD3,其中8个位码DIG0DIG7和8位段码SEG0SEG7分别与FPGA相应的引脚相连。这样只要DIG0DIG7上一直输出低电平“0,如此
9、8个数码管将显示一样的数码,这样8位动态数码管就变成了静态数码管。本实验的容是建立7段译码显示模块,用于控制LED数码管的静态显示。要求在试验箱上循环显示09和AF 16个字符。数码管LED显示是工程项目中使用较广的一种输出显示器件。常见的数码管有共阴和共阳两种。共阴数码管是将8个发光二极管的阴极连接在一起作为公共端,而共阳数码管是将8个发光二极管的阳极连接在一起作为公共端。公共端常称为位码,而将其它8位称为段码,分别为:a、b、c、d、e、f、g、h,其中h为小数点。对于共阳极数码管,只要公共端为高电平“1,某个段输出为低电平“0,如此相应的段就亮。本实验通过分频模块得到1Hz的频率信号,加
10、载于4位计数器的时钟输入端,计数循环输出09和AF 16个字符,通过7段译码模块后在数码管上显示出来。(1)启动Quartus II,建立一个空白工程,然后命名为sled.qpf。(2)新建decl7s.vhd源程序文件,源代码如下。生产符号文件decl7s.bsf (File Create/_Update Create Symbol Files for Current File)。USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY decl7s IS d: IN STD_LOGIC_VECTOR(3 DOWNTO 0); -输
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1