全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > EDA/IC设计 >

Verilog设计规范包括哪些内容

时间:2023-08-17 10:14

人气:

作者:admin

标签: Verilog  寄存器  时序逻辑 

导读:Verilog设计规范包括哪些内容-本文包含以下几方面内容,程序设计,模块例化、运算符,模块设计模板目标:用最简单,最简洁的方式,设计最易读,最高效的代码...

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

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

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

1、程序设计

1)设计时不用的语法

94adb4da-3ca2-11ee-ac96-dac502259ad0.png

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

94c73f86-3ca2-11ee-ac96-dac502259ad0.png

3)电路设计结构,主要有以下三种

94d3862e-3ca2-11ee-ac96-dac502259ad0.png

  

94e6a718-3ca2-11ee-ac96-dac502259ad0.png

94f827ea-3ca2-11ee-ac96-dac502259ad0.png

950a382c-3ca2-11ee-ac96-dac502259ad0.png

9514857a-3ca2-11ee-ac96-dac502259ad0.png

95441ae2-3ca2-11ee-ac96-dac502259ad0.png

4)电路设计要点

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

下述不合适

95539440-3ca2-11ee-ac96-dac502259ad0.png

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

956d6bc2-3ca2-11ee-ac96-dac502259ad0.png

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

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

95774412-3ca2-11ee-ac96-dac502259ad0.png

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

9595fbb4-3ca2-11ee-ac96-dac502259ad0.png

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

[5] 含有posedge或negedge的,一定是D触发器,是时序电路

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

2、模块例化

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

95a503c0-3ca2-11ee-ac96-dac502259ad0.png

95bd61c2-3ca2-11ee-ac96-dac502259ad0.png

95c7513c-3ca2-11ee-ac96-dac502259ad0.png

2)例化方法

960a944c-3ca2-11ee-ac96-dac502259ad0.png

3)参数例化

961e3754-3ca2-11ee-ac96-dac502259ad0.png

    

962e16ec-3ca2-11ee-ac96-dac502259ad0.png

3、运算符

1)信号类型reg/wire

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

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

9637e9ce-3ca2-11ee-ac96-dac502259ad0.png

9658273e-3ca2-11ee-ac96-dac502259ad0.png

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

(4)其它情况都用wire

96657d3a-3ca2-11ee-ac96-dac502259ad0.png

9676462e-3ca2-11ee-ac96-dac502259ad0.png

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

2)参数parameter

96822a7a-3ca2-11ee-ac96-dac502259ad0.png

(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的电路图,左边为组合逻辑,右边为时序逻辑

969c332a-3ca2-11ee-ac96-dac502259ad0.png

2)修改电路设计模块

verilog模板

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

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

96b081f4-3ca2-11ee-ac96-dac502259ad0.png

编辑:黄飞

 

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信