碎碎念
动动手指,关注公 众号并加星标哦
(1)
今天继续看杨博课程(见下面的海报)的第五讲。
说要用硬件思维来理解FPGA程序,所以,我盯着FPGA程序,然后脑子里想着以前画过的那些原理图。
当把每个段落一一映射以后,还真的大差不差地把加扰的程序给手搓复现出来。
(2)
首先, module里面的input和output,可以看成是顶层框图的输入端和输出端。
而reg,就是寄存器。寄存器,在一个时钟拍(比如程序中时钟上升沿)时,接收数据;但是在下一个时钟拍,才会把数据输出。
下面的assign,就想象在原理图中,左右两侧直接相连。
(3)
而在always @(posedge clk)里面的<=赋值,则表示,当时钟沿来时,表达式右侧的值都已计算完成,然后寄存器接收到这些值,但是在下一个时钟沿来时,才会输出(这点还需要再用程序来仿真验证一下)。
always里面的所有语句都是并行运行,可以想象成电路中所有的寄存器,在一个时钟节拍来的时候,同时动作,这样感觉也容易理解一些。
当程序一条一条写在always里面时,说它们是并行的,总是有点奇怪;但是如果把它们都想成电路,就通顺多了。