1255|0

14

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

verilog使用规范 [复制链接]

明德扬设计规范对电路设计做了较高的要求,其目就在于用最简单的代码、最简洁的方式,设计出最易读、最健壮、最高效的Verilog代码。按照明德扬设计规范进行代码设计的具体要求如下。
下面是初学者学习时定的规矩,明德扬点拨FPGA课程定下这些规矩,目的是为了同学们能专注于重点核心的知识,避免学习精力发散,或者学一些无关紧要的知识。
一、电路设计的语法
1、设计不用的语法
a)Initial
在进行电路设计时绝对不要用,只是在用modelsim仿真时用来写测试文件
b)task/function
用于定义任务和函数,平时设计不使用,仿真时也很少使用。完全不要花时间去学。
c)for/while/repeat/forever
除了for之外,其他三个在设计时绝对不要用。for循环请学到点拨FPGA第二十一章时才使用,之前千万不要用,用也是会错的。
在仿真时,可以用for产生重复信号,forever产生时钟,用repeat做一些重复的测试等。建议不要太深入,会基本用即可。
d)integer
用于定义整形变量,在设计时不使用,在一些测试可能会用到。
记住,我们类型只有regwire
e)模块内部不能有X态(不定态)、Z态(高阻态),内部不能有三态接口。
f)casex/casez在设计和仿真都不使用。
g)force/wait/fork在设计不使用,仿真很少使用。
h)#5,延时语句,设计时不使用(没法综合),仿真时使用。
2、设计使用的语法
a)reg/wireparameter
信号类型只有两种,regwire。记住,“信号由本模块产生,并且是用always语句产生的,类型为reg,其他都为reg”。
b)assignalways
初学者暂时不使用assign学到点拨FPGA课程第8章后再使用。
c)只允许使用if elsecase这两种条件语句
d)设计使用的算术运算符包括“+”、“-”、“*”、“/”、“%”。(注意:尽量不要使用除法和求余,因为其生成的硬件电路非常大)
e)赋值预算符“=”、“<=
时序逻辑用<=,组合逻辑用=,其他的情况不存在
f)关系运算符包括“>”、“<”、“>=”、“<=”。
g)逻辑运算符“&&”“||”“!”
为了避免歧义,逻辑运算符的两边必须都是1位宽的信号。
h)位运算符“~”“|”“^”“&”。
i)移位运算符“>>”、“<<”。
j)拼接运算符“{}”。
二、电路设计的结构
1、电路设计的三种结构
1)组合逻辑写法
       always@*begin
           语句
       end
2)时序逻辑的写法
   a)同步复位的时序电路                     
always@posedge clkbegin
     ifrst_n==1’b0begin
        语句   
     end
     else begin
         语句
     end
end
  b) 异步复位时序电路
always@posedge clk  or negedge rst_n begin
     ifrst_n==1’b0begin
         语句   
     end
     else begin
         语句
     end
end
三、电路设计的要点
1. 一个always只产生一个信号。
2. 一个信号只能在一个always里面产生。(重点,请学习点拨FPGA后续章节)
3. always是描述一个信号产生的方法
即在什么情况下,这个信号的值是多少;在其他情况下,值是多少,所有情况都要考虑清楚。
4. 条件判断只允许使用if elsecase,其他的全部不使用。
5. 含有posedgenegedge的一定是D触发器,是时序电路。
6. 设计是如果要立即有结果就用组合逻辑,即没有时序的。如果想延时一拍就用时序逻辑。
四、综述
        综上所述,对于初学者,做设计时,你只能有以下选择。
1. 只能用always设计电路,一般也只用到always@*或always@posedge clk  or negedge rst_n 两种选择。
2. 信号类型只有wirereg
3. 只能用if elsecase
4. 只能用加减乘、移位、拼接、比较运算符等。
5. 一个always只能描述一个信号
好了,规矩就定这6条。很多同学有疑问,这么多限制,能设计出复杂电路来吗?!明德扬可以很明确地说,能!不信的话,可以看点拨FPGA课程后续内容!

此帖出自信息发布论坛
点赞 关注
个人签名FPGA培训 FPGA培课程 www.mdy-edu.com/










/url]www
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表