IC设计之Verilog代码规范

描述

Verilog规范对于一个好的IC设计至关重要。

本文包含以下几方面内容,程序设计,模块例化、运算符,模块设计模板

目标:用最简单,最简洁的方式,设计最易读,最高效的代码

1、程序设计

1)设计时不用的语法

程序

2)设计时使用的语法,主要为下述a,b,c三类

程序

3)威廉希尔官方网站 设计结构,主要有以下三种

程序  程序程序

程序

程序

程序

4)威廉希尔官方网站 设计要点

[1] 一个always只产生一个信号

下述不合适

程序

改为下述,只考虑一个信号,调试,分析,代码修改很方便,不需要考虑很多

程序

[2] 一个信号只在一个always中产生

下述不符合要求,在多个always中产生

程序

[3] always是描述一个信号产生的方法,即在什么情况下,信号值为多少,其它情况下,值又为多少,情况要全部考虑

程序

[4] 条件判断只允许使用if else和case,其它的不使用(包括casex);

[5] 含有posedge或negedge的,一定是D触发器,是时序威廉希尔官方网站

[6] 想立即有结果用组合逻辑,延迟一拍有结果用时序逻辑

2、模块例化

1)什么是例化,简单到复杂

程序

程序

程序

2)例化方法

程序

3)参数例化

程序    程序

3、运算符

1)信号类型reg/wire

(1)设计代码仅用reg,wire两种类型

(2)设计代码中,由本模块且是always产生的信号,为reg类型 

程序

程序

(3)测试代码中,用initial产生的对测试模块的输入信号,用reg类型

(4)其它情况都用wire

程序

程序

(5)reg类型的信号,不一定产生寄存器

2)参数parameter

程序

(1)将整个模块中的CNT_C_W替换成12

(2)参数名用大写

3)算术运算符(+,-,*,/,%)

(1)+,-,*用的多,/,%少用,消耗资源多,用的少

4)赋值运算符(=,<=),注:时序逻辑用<=,组合逻辑用=,其它情况不存在

(1)时序逻辑用<=

(2)组合逻辑用=

5)关系运算符(>,<,>=,<=)

6)逻辑运算符(&&,||,!)

(1)一般两边都是1bit信号,多Bit也可以

(2)一般用于条件判断

7)位运算符(~,|,^,&)

(1)一般用于赋值

8)移位运算符(<<,>>)

(1)一般用于乘除运算

(2)右移1位表示除2,左移1位表示乘2

9)拼接运算符({ })

(1){a[0],b[3:2]}

(2){{3{a[0]}},b[2],a[1]}

4、模块设计模板

1)解析威廉希尔官方网站 功能

下图为自加1的威廉希尔官方网站 图,左边为组合逻辑,右边为时序逻辑

程序

2)修改威廉希尔官方网站 设计模块

verilog模板

规则:输出信号必须打一拍送出去,所以会在always中赋值,所以输出信号定义为reg类型

先定义,位宽参数,输入,输出,中间信号,编写组合逻辑,时序逻辑代码,下述为上图加法器代码

程序

  审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分