微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog使用规范

verilog使用规范

时间:10-02 整理:3721RD 点击:

明德扬设计规范对电路设计做了较高的要求,其目就在于用最简单的代码、最简洁的方式,设计出最易读、最健壮、最高效的Verilog代码。按照明德扬设计规范进行代码设计的具体要求如下。

下面是初学者学习时定的规矩,明德扬点拨FPGA课程定下这些规矩,目的是为了同学们能专注于重点核心的知识,避免学习精力发散,或者学一些无关紧要的知识。


一、电路设计的语法

1、设计不用的语法

a)Initial

在进行电路设计时绝对不要用,只是在用modelsim仿真时用来写测试文件。


b)task/function

用于定义任务和函数,平时设计不使用,仿真时也很少使用。完全不要花时间去学。


c)for/while/repeat/forever

除了for之外,其他三个在设计时绝对不要用。for循环请学到点拨FPGA第二十一章时才使用,之前千万不要用,用也是会错的。

在仿真时,可以用for产生重复信号,用forever产生时钟,用repeat做一些重复的测试等。建议不要太深入,会基本用即可。


d)integer

用于定义整形变量,在设计时不使用,在一些测试可能会用到。

记住,我们类型只有reg或wire。


e)模块内部不能有X态(不定态)、Z态(高阻态),内部不能有三态接口。


f)casex/casez在设计和仿真都不使用。


g)force/wait/fork在设计不使用,仿真很少使用。


h)#5,延时语句,设计时不使用(没法综合),仿真时使用。


2、设计使用的语法

a)reg/wire、parameter

信号类型只有两种,reg和wire。记住,“信号由本模块产生,并且是用always语句产生的,类型为reg,其他都为reg”。


b)assign、always

初学者暂时不使用assign,学到点拨FPGA课程第8章后再使用。


c)只允许使用if else和case这两种条件语句


d)设计使用的算术运算符包括“+”、“-”、“*”、“/”、“%”。(注意:尽量不要使用除法和求余,因为其生成的硬件电路非常大)


e)赋值预算符“=”、“ ”、“ =”、“ >”、“<<”。


j)拼接运算符“{}”。

二、电路设计的结构

1、电路设计的三种结构

1)组合逻辑写法

       always@(*)begin

           语句

       end

2)时序逻辑的写法

   a)同步复位的时序电路                     

always@(posedge clk)begin

     if(rst_n==1’b0)begin

        语句   

     end

     else begin

         语句

     end

end


  b) 异步复位时序电路

always@(posedge clk  or negedge rst_n )begin

     if(rst_n==1’b0)begin

         语句   

     end

     else begin

         语句

     end

end

三、电路设计的要点

1. 一个always只产生一个信号。

2. 一个信号只能在一个always里面产生。(重点,请学习点拨FPGA后续章节)

3. always是描述一个信号产生的方法

即在什么情况下,这个信号的值是多少;在其他情况下,值是多少,所有情况都要考虑清楚。

4. 条件判断只允许使用if else和case,其他的全部不使用。

5. 含有posedge和negedge的一定是D触发器,是时序电路。

6. 设计是如果要立即有结果就用组合逻辑,即没有时序的。如果想延时一拍就用时序逻辑。

四、综述

综上所述,对于初学者,做设计时,你只能有以下选择。

1. 只能用always设计电路,一般也只用到always@(*)或always@(posedge clk  or negedge rst_n )两种选择。

2. 信号类型只有wire和reg

3. 只能用if else和case

4. 只能用加减乘、移位、拼接、比较运算符等。

5. 一个always只能描述一个信号


好了,规矩就定这6条。很多同学有疑问,这么多限制,能设计出复杂电路来吗?!明德扬可以很明确地说,能!不信的话,可以看点拨FPGA课程后续内容!


这里有学习资料:yunpan.cn/cjZTiDA9pY56x   密码: c359

小编,有百度网盘吗?求百度网盘

小编,有百度网盘吗?求百度网盘资料

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top