您的当前位置:首页正文

流水灯实验报告

2022-03-24 来源:好走旅游网


实验二流水灯

实验时间:2011-11-20实验地点: 物理楼406

一、实验目的

通过此实验进一步了解,熟悉FPGA开发软件的使用方法及Verilog.HDL,的编程方法;学习简单时序电路的设计。

二、实验原理和内容

实验内容:

在实验板上实现LED1~LED8发光二极管流水灯显示 实验原理:

在LED1~LED8引脚上周期性地输出流水数据,如原来输出的数据是11100则表示点亮LED1,LED2,流水一次后,输出数据应该为111000,而此时则应点亮LED1~LED3三个LED发光二极管,这样就可以实现LED流水灯,为了观察方便,流水速率最好在2Hz左右。在QuickSOPC核心板上有-48MHz的标准时钟源,该时钟脉冲CLOCK与芯片的28脚相连,为了产生2Hz的时钟脉冲,在此调用了一个分频模块int_div模块,通过修改分频系数来改变输出频率,int-div模块是一个占空比为50%的任意整数分频器。

三、实验步骤

1,启动QuartusⅡ建立一个空白工程,然后命名为led-water.qpf。

1 / 5

2,新建Verilog HDL源程序文件ledwater.v,输入程序代码并保存,然后进行综合编译。若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。

3,从设计文件创建模块,由ledwater.v生成名为ledwater.bsf的模块符号文件。 4,将光盘中EDA-Component目录下的int-div.bsf和int-div.v拷贝到工程目录。

5,新建图形设计文件命名为led-water.bdf并保存。在空白处双击鼠标左键,在Symbol对话框左上角的libraries.v中,分别将project下的ledwater和int-div模块放在图形文件led-water.bdf中,加入输入,输出引脚,双击各引脚符号进行引脚命名。将与ledwater模块led[

7.\".0]连接的引脚命名为led[

7.\".0],与int-div模块clock连接的引脚命名为clock,int-div模块的clk-out与ledwater模块的clk相连接。

6,选择目标器件并对相应的引脚进行锁定,在这里所选择的器件为Altera公司Cyclone系列的EPIC12Q240C8芯片,引脚锁定方法见下表,将未使用的引脚设置为三态输入。信号

Led[0] Led[1] Led[2] Led[3] Led[4]引脚 IC6 50

2 / 5

53 54 55 176IC12 50 53 54 55 176EDA 50 53 54 55 176信号 Led[5] Led[6] Led[7]

3 / 5

clock引脚 IC6 47 48 49 28IC12 47 48 49

28EDA表引脚锁定方法

7,将led-water.bdf设置为顶层实体,对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。

8,最后将跳线短接跳帽跳接到SmartSOPC实验箱上JP6的LED0~LED7,使LED1~LED8分别与FPGA的引脚50,53~55,176和47~49相连,将Altera ByteBlasterⅡ下载电缆的两端分别接到PC机的打印机并口和QuickSOPC核芯板上的JTAG下载口上,打开电源,执行下载命令,把程序下载到FPGA器件中,此时,即可在SmartSOPC实验箱上看到流水灯。

9,更改分频模块(int-div)的分频系数,并重新编译下载,观察流水灯的变化。 实验参考程序 程序清单ledwater.v

4 / 5

Module ledwater(led,clk); //模块名ledwater Output[7:0]led; //定义LED输出口 Input clk; //定义时钟输入口 Reg[8:0] led_r; //定义输出寄存器 Assign led=led_r[7:0]; //寄存器输出

always@(posedge clk) //在时钟上升沿触发进程begin

led_r<=led_r<<1; //是,则输出左移一位if(led_r==9`d0) //循环完毕吗?

led_r<=9`b1111; //是,则重新赋初值 end endmodule

四、实验数据与结果

观察到实验箱流水灯依次闪烁。

五、实验总结

(1)在保存文件名字时不能以数字开头,并文件名要和程序中的模且块名一致,不然编译的时候会报错,当程序编译时的警告超过25个以上后,程序不能在目标板上正常执行。

(2)学会了怎么使用Quartus II,新建工程与下载程序的方法等等

5 / 5

因篇幅问题不能全部显示,请点此查看更多更全内容