0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

IC设计之Verilog代码规范

Hack电子 来源: 最炫ICerX 2023-08-17 10:14 次阅读

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.png94f827ea-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

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

    关注

    37

    文章

    1264

    浏览量

    102955
  • Verilog
    +关注

    关注

    28

    文章

    1326

    浏览量

    109302
  • 程序
    +关注

    关注

    114

    文章

    3631

    浏览量

    79541
  • Verilog设计
    +关注

    关注

    0

    文章

    20

    浏览量

    6474
收藏 人收藏

    评论

    相关推荐

    【分享】verilog代码书写规范

    FPGA verilog代码书写规范,很好的借鉴
    发表于 05-21 11:36

    Verilog HDL代码书写规范

    Verilog HDL代码书写规范
    发表于 09-30 08:55

    Verilog HDL代码书写规范

    本帖最后由 lee_st 于 2017-10-31 08:46 编辑 Verilog HDL代码书写规范
    发表于 10-21 20:53

    Verilog HDL代码书写规范

    1. 目的本规范的目的是提高书写代码的可读性、可修改性、可重用性,优化代码综合和仿真的结果,指导设计工程师使用VerilogHDL规范代码
    发表于 12-08 14:36

    勇敢的芯伴你玩转Altera FPGA连载34:Verilog代码书写规范

    `勇敢的芯伴你玩转Altera FPGA连载34:Verilog代码书写规范特权同学,版权所有配套例程和更多资料下载链接:http://pan.baidu.com/s/1i5LMUUD 虽然没有
    发表于 12-27 09:41

    FPGA的代码书写规范

    代码书写规范本文节选自特权同学的图书《FPGA设计实战演练(逻辑篇)》配套例程下载链接:http://pan.baidu.com/s/1pJ5bCtt 虽然没有“国际标准”级别的Verilog
    发表于 04-16 04:08

    Verilog代码书写规范

    Verilog代码书写规范规范的目的是提高书写代码的可读性、可修改性、可重用性,优化代码
    发表于 04-15 09:47 106次下载

    verilog代码规范

    verilog代码规范,学会写代码还不行,我们需要更加的规范
    发表于 03-25 14:43 24次下载

    华为 内部资料 verilog编码规范coding style

    verilog代码规范,学会写代码还不行,我们需要更加的规范
    发表于 03-25 14:42 145次下载

    华为_VERILOG语言编写规范

    verilog代码规范,学会写代码还不行,我们需要更加的规范
    发表于 03-25 14:36 34次下载

    华为verilog教程

    verilog代码规范,学会写代码还不行,我们需要更加的规范
    发表于 03-25 14:28 35次下载

    华为的verilog编码规范

    华为的verilog编码规范
    发表于 11-01 08:41 40次下载
    华为的<b class='flag-5'>verilog</b>编码<b class='flag-5'>规范</b>

    Verilog程序编写规范

    在实际工作中,许多公司对Verilog程序编写规范都有要求。在公司内部统一Verilog程序编写规范不仅可以增强程序的可读性、可移植性,而且也有助于逻辑工程师之间交流、沟通,提升逻辑组
    的头像 发表于 09-15 09:35 3513次阅读

    科普一下Verilog代码命名规范

    命名规范包括模块命名规范代码命名规范代码命名需要有确定的含义,提高代码可读性和可维护性。
    的头像 发表于 11-17 09:54 2922次阅读

    FPGA的Verilog代码编写规范

      注:以R起头的是对编写Verilog代码的IP设计者所做的强制性规定,以G起头的条款是建议采用的规范。每个设计者遵守本规范可锻炼命名规范
    的头像 发表于 08-15 16:23 1220次阅读