1. 实验要求及目的:
前面三个实验我们都只用到了LED,也就是输出。但是我们做的东西多半都是需要人机交互的,所以不能光是有输出,还应该有输入(其实前面也用到了输入,那就是时钟)。这个实验我们会用到按钮,通过按钮输入,判断逻辑,然后利用LED来显示出来逻辑输出结果。
这个实验主要是体会一下输入的用法,难度比较小。主要实现的是C=A •B这个功能。
使用软件:Quartus II 5.0。
2. 硬件原理图:
LED灯的原理图可以参考前面实验的图,就不再贴了。
我们这个实验用到两个按钮,BUT1和BUT2,分别对应实验板(REV.B)的78和77引脚。按钮平时的状态应该是高“1”,按下之后FPGA的引脚输入变成低“0”。输出为LED1,引脚为实验板(REV.B)的79引脚。
3. 程序设计
(1)设计分析:
(2)源程序 exp4.v
程序代码:
// Base logic exp
// Designed By Smokingfish @ www.51FPGA.com zhiyuh@163.com
module exp4(led,a,b);
input a,b;
output led;
assign led=a&b;
endmodule
程序简单明了,不用我多讲什么吧,大家都应该明白是什么意思。这实际就是一个与门,如果有一个输入为0,那么输出就为0,这样就点亮了LED。
4. 实验步骤
(1)打开Quartus II软件,进入集成开发环境,点击File->New project wizard..新建工程项目exp4,直接点击Finish。
(2)点击File->New..在该项目下新建Verilog HDL源程序文件exp4.v,输入上面的源程序代码并保存。
(3)选择所用的FPGA器件----EP1C3T144C8,以及进行一些配置。
选择配置器件,如果要下载程序到EPCS1的话。
选择不需要使用的IO功能。选择As inputs,tri-stated。
点击两次ok,回到主界面。
(4)为工程项目锁定引脚:利用以下TCL文件为工程锁定引脚。
程序代码:
#Pin_Setup.tcl
# Setup pin setting
set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED"
set_global_assignment -name ENABLE_INIT_DONE_OUTPUT ON
set_location_assignment PIN_79 -to led
set_location_assignment PIN_78 -to a
set_location_assignment PIN_77 -to b
(5)编译工程项目:点击Processing->Start Compilation。
(6)仿真: 自己建立仿真文件检查自己的设计是否正确。
(7)下载目标文件到板子上:点击Tools->Programmer,选中Jtag模式,并且选中目标文件,然后点Start。
第四个实验结束了,很快吧,学到什么没有呢?不要说没有哦。
你也可以试着做一些其他的实验,比如非门,或门,38译码器等等,自己设计出来比跟着别人做更有意思的。
这个实验就不贴录像了,我只有两个手,不好拍。效果就是按下BUTTON1或者BUTTON2都能点亮LED1。