FPGA! LED外设代码写法详解

2019-11-7 17:29 389 9

1、LED与时钟、复位硬件原理图

Hello FPGA! LED外设代码详解

(低电平,LED亮;高电平,LED灭)

Hello FPGA! LED外设代码详解

(按键按下,nRESET低电平,复位)

2、点亮上面8个LED灯中的LED2、LED3、LED4、LED6、LED7、LED8。

1)第1种写法:

Hello FPGA! LED外设代码详解

2)第2种写法:

Hello FPGA! LED外设代码详解

给LED0端口赋值1'b0,为什么要写1'b0,而不直接写0呢?1'b0是指用的1位二进制数,而0则等于32'd0。如果数字没有进制表示的话,就默认为十进制数,并且位宽默认为32位。尽管1'b0和32'd0结果是相同的,但是用十进制表示的话会大大浪费资源。

3、LED1每隔1s闪烁1次

Hello FPGA! LED外设代码详解

1)第1种写法:

Hello FPGA! LED外设代码详解

Hello FPGA! LED外设代码详解

2)第2种写法:

Hello FPGA! LED外设代码详解

Hello FPGA! LED外设代码详解

比较上面的两种写法:如果学过C语言的朋友,看到第2种代码肯定会倍感亲切,因为这就是利用C语言的编程思想来写的。但是,这种代码风格表面看起来非常好,但是它却有很多缺点,比如,通过这种方法写出来的代码,很抽象,我们没有办法看出该代码所对应的硬件结构,而且,我们对阻塞赋值和非阻塞赋值也是分不清楚的。最严重的是,通过这种方法写出来的代码,我们使用的还是之前软件编程的固有思路,也就是说,我们还没有真正的学会用硬件的方式去解决问题。

3)ModelSim仿真

为了能够仿真,需要将程序中的SET_TIME_1S设置为27'd9,也就是将定时时间由1修改为0.2us,200ns,10个时钟周期。这是因为仿真时间是以ps为单位的,仿真总体时间也很短,仿真1s实现不了。

Hello FPGA! LED外设代码详解

Hello FPGA! LED外设代码详解

Hello FPGA! LED外设代码详解

4、流水灯:LED1、LED2、......、LED7、LED8每隔1s依次点亮。

Hello FPGA! LED外设代码详解

广告
推荐阅读
Excel数据透视表快速汇总了数量和金额,各种产品求均价 2020-05-15 16:21
DataScope虚拟示波器与复利叶变换(FTT),STM32如何识别声音频谱 2020-02-26 20:44
哪种程式语言最常用?Python用5年打败Java(14年最多工程师用语言) 2019-10-22 14:55
电路EMI超标?修改一下电路布局,拉开距离就搞定 2020-03-06 12:14
烧写工具有什么升级方式集合功能-STM32CubeProgrammer 2020-02-26 20:53
广告
广告