FPGA 开发流程 Verilog语言

系统学习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.编程下载和在线测试

猜你喜欢

转载自blog.csdn.net/weixin_43319452/article/details/112714366
今日推荐