之前看学testbench的时候,看了特权同学的视频,觉得给了我一些启发,然后果断去图书馆借了《深入浅出玩转FPGA》,一口气读了6个笔记,感觉收获颇丰啊:
关于代码的优化,不同的语法写出来的同一功能的硬件实现是不一样的,这取决于,综合的软件的不同,但是随着软件版本的升级,其识别这样功能的能力是越来越强,使其趋近于相同,比如if else 语句和case语句实现相同功能的时候,if语句趋向于优先级的结构,而case语句是趋向于并行结构,在今后的代码编写中也要注意不同语法结构生成的RTL视图的差异,以及Technology Map Viewer。
还有一个之前理解错误的地方,4比如:reg LED_OUT ;是定义了一个这样的一个寄存器是寄存器的名字,而其他的变量可以理解为不同的信号线上的名字,之前的理解有混淆。
更深一步理解了FPGA内部是怎么一回事了,假如要用到一个四输入的与门,其内部就会分配一个4输入LUT,而当有5输入时,就会分配两个LUT 了,因为每一个都是四输入的。这样在分配的时候注意这一点可以优化资源,但是鱼和熊掌不能兼得。
在编写注释的时候,要让其明白这一句话在整个系统代码中是什么作用,而不是这句语法本身的作用,因为看代码的一般语法还是理解的,需要获取的信息是这样的语法在整个系统中实现了什么样的功能。
关于复位,有同步复位和异步复位。同步复位会多产生一个门,原因是异步复位用到了寄存器上存在的复位端,而同步没有。