Verilog软硬件思维切换

Verilog跟C语法有很多相似的地方,很容易犯软件思维的错误。

软件思维(仅指非并发)更多是把问题转换成多个功能模块,按顺序执行,没有严格的时间空间依赖关系,只关心输入输出的值,不关心时间上是否冲突;

硬件思维是把每个模块作为一个电路模块,多个模块共同作用,有严格的时序关系,输入输出不一定同时,也不一定存储下来,有些不能用变量认知。

以厨房做菜为例子。刚开始只有一个厨子,他做菜的流程就是先洗菜,再切菜,最后炒菜,一个流程只做一个菜,这是串行执行程序;为了提升效率,厨子一次多洗几个菜,切菜的同时把锅中水烧热,炒菜的时候用两个锅,交替去炒,这是并发;后来为了开好一个饭店,厨子请了几个小工,洗菜的,切菜的都有人去做,大家需要有序配合,各司其职才能满足食客要求按一定顺序上好一桌菜。

写Verilog代码时,需要把每个信号看做一个模块,除了考虑它的数据依赖,还要注意控制依赖以及时序依赖。

控制信号类型

FPGA控制信号按作用时间可分为 脉冲信号电平信号。前者通常作为控制信号,往往获取其上升沿或者下降沿,即当这个信号发生某种变化时,被控信号就会发生变化,直到下次发生变化,例如时钟,复位,握手信号等,有效时间在于前后两个时刻值发生了变化;电平信号只需要获取当前信号状态即可,例如读写使能信号,在这个信号为某值的时间段内,被控信号能做某些事。

简单来说一个在于前后时刻发生的变化类型(由低到高或由高到低),另一个是当前时刻的值状态。作为控制信号存在时,前者的是“当某某信号变化时”,后者是“当某某信号为某值时”

信号采集和变化

FPGA信号分为wire型和reg型,都会发生变化,区别在于前者立即发生变化,时间差是物理导线传播时间和硬件运算时间;后者是只有在每个时钟周期到来时变化。

而变化的原因在于信号采集,信号采集是一个瞬时过程,但也需要采集时间

对于a <= b; b <= c; c <= d; 当时钟上升沿发生时,发生如图所示的变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值