今天是第一次独立上手完全编写代码,中间还是出现了一些问题需要记录。
1.wire和reg还是没能分清楚,我的目前的理解是,输入如果是信号那就是wire,如果是数字就是reg,这样的理解肯定还是不对的。
工程文件里,input和output都给的是wire,合理怀疑,下一步可以进行扩展,所以就把output写成了wire。然后在编写tb文件的时候,因为要给input连接实体,所以就给input定义成了reg,然后output还是wire。
2.测试文件中,只需要给input初始化1‘b0即可,然后给input一些随机数,让他测试output。
3.工程文件中,assign {cout, sum} = in1 + in2;这一句,高位为左,低位为右,和我们的习惯类似。这里的cout和sum都是wire型,如果是reg型,赋值要用always
4.在写if或者switch语句时记得写default
5.同步复位:听时钟的,时钟到了才检测。异步复位,管你时钟在哪里,直接复位。但是复位信号失效并不会导致复位瞬间失效,还是要看下一个时钟上升沿(下降沿)
6.时序逻辑比组合逻辑有更好的毛刺屏蔽作用,说人话就是,变化只存在于上升下降沿,在处于非上升下降沿的时候,不会产生变化。
7.组合逻辑默认时钟上升沿和信号上升沿对齐,那么用下一时刻的值,时序逻辑用上一时刻的值
2023.7.2 FPGA笔记,半加器
最新推荐文章于 2024-08-13 09:32:51 发布
本文记录了作者初次编写Verilog代码的经验,重点讨论了wire和reg的使用场景,输入输出的声明,测试文件的构建,以及赋值语句、条件语句的注意事项。还提到了同步和异步复位的概念,以及时序逻辑和组合逻辑的特点。
摘要由CSDN通过智能技术生成