fpga流水灯实验报告Word文件下载.docx
- 文档编号:17762645
- 上传时间:2022-12-09
- 格式:DOCX
- 页数:9
- 大小:19.96KB
fpga流水灯实验报告Word文件下载.docx
《fpga流水灯实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《fpga流水灯实验报告Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。
(五)灵活性
VhDL最初是作为一种仿真标准格式出现的,有着丰富的仿真语句和库函数。
使其在任何大系统的设计中,随时可对设计进行仿真模拟。
所以,即使在远离门级的高层次(即使设计尚未完成时),设计者就能够对整个工程设计的结构和功能的可行性进行查验,并做出决策。
VhDL的设计结构
VhDL描述数字电路系统设计的行为、功能、输入和输出。
它在语法上与现代编程语言相似,但包含了许多与硬件有特殊关系的结构。
VhDL将一个设计称为一个实体entity(元件、电路或者系统),并且将它分成外部的可见部分(实体名、连接)和内部的隐藏部分(实体算法、实现)。
当定义了一个设计的实体之后,其他实体可以利用该实体,也可以开发一个实体库。
所以,内部和外部的概念对系统设计的VhDL是十分重要的。
外部的实体名或连接由实体声明entity来描述。
而内部的实体算法或实现则由结构体
Architecture来描述。
结构体可以包含相连的多个进程process或者组建component等其他并行结构。
需要说明的是,它们在硬件中都是并行运行的。
VhDL的设计步骤
采用VhDL的系统设计,一般有以下6个步骤。
1)要求的功能模块划分;
2)VhDL的设计描述(设计输入);
3)代码仿真模拟(前仿真);
4)计综合、优化和布局布线;
5)布局布线后的仿真模拟(后仿真);
6)设计的实现(下载到目标器件)。
[实验说明]
该流水灯除了输入有:
时钟端、使能端和清零端,输出为8个led指示灯。
清零端为低电平时回到最初始状态,输出为o1灯亮,为高电平时无作用;
使能端低电平时流水灯停止,高电平时流水灯继续流动;
时钟端为系统时钟输入,要求8个led指示灯每秒变化一次,向右流动,变化顺序依次为o1灯亮?
o2灯亮?
o3灯亮?
o4灯亮?
o5灯亮?
o6灯亮?
o7灯亮?
返回o1。
电路逻辑功能实现后,可将该逻辑功能下载到cpLD中。
注意选择:
清零端选1脚,使能端选拨码开关,时钟端选83脚、输出线8根(接发光二极管指示灯);
测试时根据输入信
[实验要求]
1用VhDL语言实现流水灯
2设计仿真文件,进行软件验证
3通过下载线下载到实验板上进行验证
4灯有两种模式每种模式有四种变化。
5第一种模式下灯的花色循环变化不能控制,第二种情况下花色可以控制并且变化间有声音。
流水灯设计
1、分频模块的VhDL设计:
libraryIeee;
useIeee.sTD_LogIc_1164.ALL;
useIeee.sTD_LogIc_ARITh.ALL;
useIeee.sTD_LogIc_unsIgneD.ALL;
entitylightis
poRT(cLK_In:
InsTD_LogIc;
--输入时钟信号
cLK_ouT:
ouTsTD_LogIc;
--分频后的输出时钟信号
);
endlight;
architecturebehavioraloflightis
signalcont:
sTD_logic_vector(1downto0);
begin
process(cLK_In)
begIn
IFRIsIng_eDge(cLK_In)Then
IFconT="
11"
Then
conT cLK_ouT eLseconT cLK_ouT=0;
enDIF;
enDpRocess;
endbehavioral;
2、流水灯从左至右连续显示
entitylight2is
poRT(cLK:
--分频后的时钟信号
en:
--使能控制信号
m:
ouTsTD_LogIc_VecToR(7DownTo0);
--控制8个灯的输出信号);
endlight2;
architecturebehavioraloflight2is
sIgnALseL:
sTD_LogIc_VecToR(2DownTo0);
pRocess(en,cLK,seL)
IFRIsIng_eDge(cLK)Then
IFen=1Then
IFseL="
111"
seL eLse
seL enDIF;
cAseseLIs
when"
000"
=>
m when"
001"
010"
011"
100"
101"
110"
m whenoTheRs=>
nuLL;
enDcAse;
3、流水灯从右到左连续显示:
entitylight3is
n:
endlight3;
architecturebehavioraloflight3is
seL 篇二:
FpgA基础试验之流水灯
综合实验报告
第四组
组长:
昊020*********
FpgA基础试验之流水灯
一、实验目的
通过此实验进一步了解、熟悉和掌握QuartusII开发软件的使用方法及Verilog语言的编程方法。
学习简单时序电路的设计分析和硬件测试。
二、实验内容
1.熟悉信号产生板中的FpgA的普通I/o的连接;
2.根据实际的流水灯分析时序,体会用Verilog语言的编程产生相应时序;
3.熟悉集成开发工具QuartusII,学会使用QuartusII对cyclone系列FpgA的程序开发、编译与调试;
4.掌握cyclone系列FpgA的程序加载,熟练掌握将.sof文件加载到实验板的FpgA中,实现流水灯的效果。
三、实验原理
流水灯,顾名思义就是让LeD像水一样的点亮。
如果把流水做慢动作播放,可以想象到其实就是移动,即:
把水块不断地向同一方向移动,而原来的水块保持不动,就形成了流水。
同样,如果使得最左边的灯先亮,然后通过移位,在其右侧的灯,从左向右依次点亮,而已经亮的灯又不灭,便形成了向右的流水灯。
初始状态时,四个灯都不亮,每来一个时钟脉冲,cLK,计数器就加1.这样通过移位依次点亮所有的灯,就形成了流水灯。
而当四个灯都点亮时,需要一个操作使得所有的灯恢复为初始状态。
然后,再一次流水即可。
如果是右移位,就出现向右流水的现象;
反之,向左流水。
四、实验要求
控制4个LeD进行花式显示,根据硬件设施设计两种模式:
s0:
从全亮到全灭,再到全亮,依次循环;
s1:
从LeD0开始依次点亮,为LeD1亮,LeD2亮,LeD3亮,后再LeD2亮,LeD1亮,LeD0亮,不停循环。
即输出为:
s0时,从0000到1111不停循环转换;
s1时,0111,1011,1101,1110,1101,1011,0111不断循环。
五、实验步骤
(1)建立工程
(2)建立Verilog文件,编写相关程序
(3)将verilog文件编译为可视化电路图文件
(4)将可视化电路图文件添加输入输出组合成电路图文件
(5)编译语法及验证原理图
(6)根据需要分配管脚并进行编译
(7)下载编译后得到的文件.sof(在线方式),.pof(离线方式)。
一般考虑用在
线方式。
(8)显示实验结果
六、电路符号:
流水灯的电路符号如下图所示。
sw1为模式选择输入。
rst_n为复位信号,
接高电平,sys_clk为时钟信号输入,led[3..0]为LeD显示信号输出端。
七:
设计方法:
采用文本编辑法,即利用veriloghDL语言描述流水灯,代码如下:
moduleliushuideng(sw1,sys_clk,rst_n,led);
//接口定义
inputsys_clk,rst_n,sw1;
//输入:
系统时钟50mhz,复位输入
output[3:
0]led;
//输出:
3个led产生流水现象,轮流点亮+
reg[25:
0]count;
//系统时钟频率过高,需要计数的方式来产生延时,使led保持
状态一段时间
reg[3:
//led低电平点亮
reg[2:
0]flag;
//状态转换的入口,发生变化的时候,点亮另外一个led
always@(posedgesys_clk)
if(!
rst_n)//复位,给寄存器赋初值
flag count end
//else//sys_clk上升沿到来
//begin
if(count==26d20)
count if(flag==3b111)//当flag等于2’b10时,flag归零(实际上,当flag==2’
b10时,要在下一次归零,即在flag==2’b11时,马上就变成2’b00,而并非当
flag==2’b10时马上变为2’b00;
)
flag else//否则flag加一
flag end
else
count end
if(sw1==1b1)
case(flag)//由于flag会不断变化,并且flag在从一个值变成另一个值的时候,会
保持一段很长的时间,我们利用它来产生流水灯现象
3b000:
led 3b001:
led 3b010:
led
b0000;
//点亮所有灯,都为低电平
3b011:
led 3b100:
led 3b101:
led 3b110:
led 3b111:
led default:
led endcase
end
led //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++
3b010:
led 3b011:
endmodule
仿真结果:
1:
当swl=1时,
(1)时序仿真结果如图所示
(2)功能仿真结果为:
功能仿真没有时延。
篇三:
流水灯实验报告
实验二流水灯
实验时间:
20XX-11-20实验地点:
物理楼406一、实验目的
通过此实验进一步了解,熟悉FpgA开发软件的使用方法及Verilog.hDL,的编程方法;
学习简单时序电路的设计。
二、实验原理和内容
实验内容:
在实验板上实现LeD1~LeD8发光二极管流水灯显示
实验原理:
在LeD1~LeD8引脚上周期性地输出流水数据,如原来输出的数据是11111100则表示点亮LeD1,LeD2,流水一次后,输出数据应该为11111000,而此时则应点亮LeD1~LeD3三个LeD发光二极管,这样就可以实现LeD流水灯,为了观察方便,流水速率最好在2hz左右。
在Quicksopc核心板上有-48mhz的标准时钟源,该时钟脉冲cLocK与芯片的28脚相连,为了产生2hz的时钟脉冲,在此调用了一个分频模块int_div模块,通过修改分频系数来改变输出频率,int-div模块是一个占空比为50%的任意整数分频器。
三、实验步骤
1,启动QuartusⅡ建立一个空白工程,然后命名为led-water.qpf。
2,新建VeriloghDL源程序文件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芯片,引脚锁定方法见下表,将未使用的引脚设置为三态输入。
表引脚锁定方法
7,将led-water.bdf设置为顶层实体,对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。
8,最后将跳线短接跳帽跳接到smartsopc实验箱上Jp6的LeD0~LeD7,使LeD1~LeD8分别与FpgA的引脚50,53~55,176和47~49相连,将AlterabyteblasterⅡ下载电缆的两端分别接到pc机的打印机并口和Quicksopc核芯板上的JTAg下载口上,打开电源,执行下载命令,把程序下载到FpgA器件中,此时,即可在smartsopc实验箱上看到流水灯。
9,更改分频模块(int-div)的分频系数,并重新编译下载,观察流水灯的变化。
实验参考程序
四、实验数据与结果
观察到实验箱流水灯依次闪烁。
五、实验总结
(1)在保存文件名字时不能以数字开头,并文件名要和程序中的模且块名一致,不然编译的时候会报错,当程序编译时的警告超过25个以上后,程序不能在目标板上正常执行。
(2)学会了怎么使用QuartusII,新建工程与下载程序的方法等等
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- fpga 流水 实验 报告