欢迎光临散文网 会员登陆 & 注册

fpga verilog语法篇 1基本概念

2023-07-24 08:51 作者:GXTon_阿通  | 我要投稿

本节继续分享一些基本概念,

其中模块是核心,

其他的几个: 综合,输入输出端口,时序,例化...  都是说的模块的特性.



verilog的工程里面,是一个一个的模块组成的.

比如,之前提到的,温度采集系统.

就可以设计三个核心模块,

1,ad转换模块;

2,温度值处理模块;

3,温度值输出模块;

模块分为可以综合,和不可以综合的.



什么是综合?

如果verilog的模块所描述的功能,是可以通过fpga内部的硬件搭建,那么就是可以综合的,否则就是不可以综合的.

比如上面的,

1,ad转换模块; (可以综合)

2,温度值处理模块; (可以综合)

3,温度值输出模块; (可以综合)

除了这三个模块,我们还需要对每个模块设计一个测试模块(tb模块),

测试模块里面就有时钟,是调用fpga官方函数实现的,这个时钟就是不可以综合的.



模块总会有输入和输出端口.

输入端口是为了进行数据的输入,

输出端口是为了让处理后的数据输出,提供给下一个模块使用,或者显示出来.

输入输出端口是有固定类型的.

输出输出的设计很重要,

因为verilog程序,最终编写出来,都是流水线式的工作,

比如,还是采集温度的系统.

流水线上就有三个环节(模块)

1,ad转换

2,数据处理

3,温度值输出

这三个环节是配合的,如何才能默契的配合,

需要时序,我们按照相同的步调.

或者,需要标志,第一个模块工作完成之后,输出一个脉冲,提醒第二个模块,

第二个模块工作完成之后,输出一个脉冲,"叫醒"第三个模块工作...

如果不一致,就会乱掉,流水线上就会产生堆积,或者提前处理不完整数据,这样整个系统就会崩溃.



既然大部分fpga系统都是按照流水线式进行工作的,

那么时序就很重要.

上面提到的脉冲和时序,都是输入输出端口中的某个变量.

所以,好的输入输出端口,可以让系统更加稳定.



例化是什么?

我们设计了三个模块,

1,ad转换

2,数据处理

3,温度值输出

这里只是相当于模具,如果想要三个模块配合运行起来,

就需要设计一个主模块.

在主模块中,例化上面三个模块,

在例化的时候,传入的变量是真实的数据.

数据处理模块,例化的时候,输入端口的数据是ad转换处理后的数据.

输出端口的数据是给温度值输出模块的数据.

这样三个模块通过例化联系在了一起,

然后运行主模块,整个流水线才会工作起来.



fpga verilog语法篇 1基本概念的评论 (共 条)

分享到微博请遵守国家法律