系统学习FPGA,领悟FPGA开发思想。
因在学校中学过FPGA,觉得学的还是皮毛,想进一步学习FPGA。
案例:按键控制LED亮灭
1.设计定义–>分析,将问题转化控制电路
二选一多路器
两个输入IO,a,b可以是低电平,也可以是高电平
输入按键按下时,LED灯与a端口保持一致
输入按键释放时,LED灯与b端口保持一致
按键模块
按键控制LED亮灭模块设计
2.综合
ModelSim_Alteral不行,可以选ModelSim
按键控制LED亮灭.v
module led_test(a,b,key_in,led_out);
/*
二选一多路器
两个输入IO,a,b可以是低电平,也可以是高电平
输入按键按下时,LED灯与a端口保持一致
输入按键释放时,LED灯与b端口保持一致
*/
input a;//输入端口a
input b;//输入端口b
input key_in;//按键输入,实现输入通道的选择
output led_out;//led输出
//输入按键按下时,为低电平,LED灯输出与a端口保持一致
assign led_out = (key_in == 0)? a : b;
endmodule
开始分析和综合 快捷键:ctrl+A
点Apply,后点击OK
按键控制LED亮灭仿真
`timescale 1ns/1ps//定义仿真精度 1ns:仿真步进 1ps:仿真精度 #100.1:延时100纳秒+100皮秒
module led_test_tb;//该文件是测试文件,仿真测试的文件是led_test
//激励信号定义,对应连接到待测试模块输入端口
reg a,b,key_in;
//待测试信号定义,对应连接到待测试模块输出端口
wire led_out;
led_test led_test0(a,b,key_in,led_out);//实例化待模块
//产生激励
initial
begin
a=0;b=0;key_in=0;//0时刻
#100 a=0;b=0;key_in=1;
#100 a=0;b=1;key_in=0;
#100 a=0;b=1;key_in=1;
#100 a=1;b=0;key_in=0;
#100 a=1;b=0;key_in=1;
#100 a=1;b=1;key_in=0;
#100 a=1;b=1;key_in=1;
#100 $stop;//调用系统函数stop 仿真结束
end
endmodule
3.布局布线
4.时序仿真与功能仿真
5.编程下载和在线测试