1.moudle中 parameter和define的作用范围
3. 可综合电路 (例如forever , initial(一般用于测试程序),fork...join,wait,time,display,循环次数不定的for语句均不可综合; 延时(不可综合,但是也不会报错)) 。generate 可综合 相当于把代码全写完。可以综合的变量 reg,integer,wire,sti四种;不可综合的变量有: time real。
4. 综合 分为三步:translation + logic optimization + gate mapping;
Translation:主要把描述RTL级的HDL语言,在约束下转换成DC内部的同意用门级描述的电路,以GTECH或者没有映射的ddc形式展现
logic optimization:逻辑优化,就是把统一用门级描述的电路进行优化,例如把路径调整一下,门改一下。
Gate mapping: 门级映射;DC用别的厂商的工艺库把电路给映射出来,得到一个ddc文件;包括映射的门电路信息与网表,.v格式的网表,延时信息(sdf),工作约束(sdc)。(.ddc不能用文本编辑器打开)。.ddc这个包含的网表文件是实际意义的网表文件,而.v这个形式的网表问价是用来做后仿真的文件。
4. 阻塞赋值, 非阻塞赋值
5. 无损定点化 :将第一位小数变到5以下
6. 模块例化: 例如声明一个测试模块,需要将设计模块的输入输出实例化,之后使用initial过程块
7. 数值的表达:C=3’d8 是不行的因为:前面的3代表 二进制下的位数 最高只能 111 代表最高是7.
8. 循环语句四种: for while repeat(常量表达式) forever(不能写在程序中 必须写在initial中) generate(必须用genvar 来声明for循环的参数,可以综合的)
9. 有符号数的操作 Verilog中对于无符号数、有符号数的处理_nxhsyv_新浪博客
对于长位宽赋值给短位宽,不管左侧右侧是有符号数无符号数,均截取
对于短位宽赋值给长位宽,右侧是无符号数,补0 ;右侧是有符号数,看左侧的符号位是多少,是1补1,是0补0.
取绝对值: 一般有代码。
有符号比较大小, 比较器的面积大小是不同的,但是无符号数的面积大小是相同的。
有符号数进行位移操作 是正数首位为0没有问题, 是负数的话会出错,因为最高位是要补0的。可以使用/2来进行代替操作。
10. 线性信号不是必须显性定义 默认为0.
11. eg[31:0] data ;
data[0+:8] = data[7:0]
eg[0:31] data ;
data[0+:8] = data[0:7]
12. 分频器的实现:
奇数分频器
偶数分频器
13. 关键字和优先级
14. >> 表示逻辑后移;>>> 表示算术后移 适用于有符号数