当前位置: 首页 > news >正文

源代码 培训 网站百度平台商家客服

源代码 培训 网站,百度平台商家客服,张掖做网站公司,网站正在建设中模板免费下载verilog编程规范 文章目录 verilog编程规范前言一、代码划分二、verilog编码ABCDEFG 前言 高内聚,低耦合,干净清爽的代码 一、代码划分 高内聚: 一个功能一个模块干净的接口提取公共的代码 低耦合: 模块之间低耦合尽量用少量…

verilog编程规范

文章目录

  • verilog编程规范
  • 前言
  • 一、代码划分
  • 二、verilog编码
    • A
    • B
    • C
    • D
    • E
    • F
    • G


前言

高内聚,低耦合,干净清爽的代码


一、代码划分

高内聚:

  • 一个功能一个模块
  • 干净的接口
  • 提取公共的代码

低耦合:

  • 模块之间低耦合尽量用少量的线连接

模块划分:关键路径逻辑和非关键路径逻辑放在不同的模块。方便对关键路径做速度优化,非关键路径做面积优化

二、verilog编码

A

  • 设计文档和应用文档
  • 一个模块一个文件,并命名相同
  • 顶层模块只包模块之间的连线

B

  • 避免门级电路,变得不可移植
  • 避免三态门,而使用多路选择电路
  • 避免latch

C

  • 保证时钟和复位不出现gilch(竞争冒险产生的毛刺)。尽量使用同步复位
  • 单个模块的reg使用同步复位
  • 小心使用门控时钟(一般在低功耗设计中是用),门控时钟容易产生毛刺。如果要使用门控,尽量借助综合工具自动插入门控时钟。如果是手动,门控信号要从reg中给出,避免glitch
  • 避免使用模块内部产生的使用,用PLL或者mmCM
  • 一个模块中只使用一个时钟
  • 避免多周期路径和假路径(多周期路径就是一个寄存器输出到另一个寄存器输入的路径不能再一个时钟周期完成)
  • 要写可测试性设计(DFT):写功能时,就要考虑ATPG和BIST,要添加各种测试逻辑和bypass逻辑
  • 一个模块中只用一个时钟沿。如果需要两个,则分开模块或者,将该时钟进行取反后输入(取反后的使用IBUFG)
  • 跨时钟处理:要同步的信号从reg中出来。要同步的信号至少锁存两个clk。对cnt同步要用格雷码
    关于跨时钟处理,有以下代码可以比较:

100MHz时钟域下有一个单周期的脉冲,如何将其转换到80MHz时钟域下的单周期脉冲。
使用电平同步,将100MHZ的信号扩展,然后使用边沿检测。但是下面代码存在问题。

module test(  input 
i_clk1,   //100MHz  
input i_clk2,   //80MHz  
input i_pulse,  
output o_new_pulse);
reg r1_pulse;
reg r2_pulse;
wire w_pulse;
always @(posedge i_clk1)  //100Mbegin  r1_pulse <= i_pulse ;      r2_pulse <= r1_pulse;
end
assign w_pulse = r1_pulse | r2_pulse;
reg r1_new_pulse;
reg r2_new_pulse;
reg r3_new_pulse;
wire w_new_pulse;
always @(posedge i_clk2) //80Mbegin 
r1_new_pulse <= w_pulse;  
r2_new_pulse <= r1_new_pulse;  
r3_new_pulse <= r2_new_pulse;
end
assign o_new_pulse = ~r3_new_pulse & r2_new_pulse;
endmodule

问题代码在这里:assign w_pulse = r1_pulse | r2_pulse;
在这里插入图片描述
两个寄存器之间是有延迟的,通过把脉冲变成电平信号,如果出现上图的情况,会导致电平信号又断点。在80MHZ的时钟周期的采样,可能或漏。处理方式如下面说的“要同步的信号从reg中出来”。即先在当前时钟域下先展宽之后,在从reg中输出出来给别人用,这样就避免使用组合逻辑了。
因此代码修改如下

always @(posedge i_clk1)  //100Mbegin r1_pulse <= i_pulse ;    r2_pulse <= r1_pulse; w_pulse  <= r1_pulse | r2_pulse;end
reg r1_new_pulse;
reg r2_new_pulse;
reg r3_new_pulse;
wire w_new_pulse;
always @(posedge i_clk2) //80Mbegin  
r1_new_pulse <= w_pulse;  
r2_new_pulse <= r1_new_pulse; 
r3_new_pulse <= r2_new_pulse;end

小结:

会议竞争和冒险的原理,可以发现,assign B = a & b; 这如果a和b因为布线延迟的原因,那么该组合逻辑就可能产生毛刺。在写组合逻辑的时候,也尽量去考虑布线的延迟问题,是否产生的毛刺会给设计带来影响。
参阅文章 竞争和冒险

D

  • 用always@(*)
  • 注意阻塞赋值和非阻塞赋值的场合:1.不要混用。2.组合逻辑always@()用=;锁存逻辑always@()用<=.3.时钟逻辑用<=
  • 使用三段式状态机,且组合逻辑的转态跳转要用default
  • case比if的时序好,case无优先级。if有优先级。
  • if语句书写:嵌套要用begin
if(a == 1) beginif(c == 1)...else...end
else...

E

  • 模块的输入先reg再使用。模块的输出先reg再输出。使得输入的时序,输出强度和延迟好预测。这样可以获得更好的时序
    如代码:
module ins(input i_clk,input i_rst,input i_data,output o_vld
);
reg ri_data;
reg ro_vld;assign o_vld = ro_vld;always@(posedge i_clk)ri_data <= i_data;always@(posedge i_clk)ro_vld<= 1'b1;
endmodule
  • 不要驱动input
  • 保证所有output被驱动,如果没有使用则用assign 输出为0或者1
  • 要声明所有信号,反之会被综合为1bit
  • reg只能在一个always中赋值
  • 在写验证代码时,不要用内部信号,用点操作符有时候会有问题,因为内部信号在综合为网表之后就不见了,在使用ila抓数时,使用点操作符去索引内部信号,可能会报错(综合时被优化掉了名字)。
  • 设计代码时,不要使用force release initial forever === !===等

F

  • 不要在include中写目录名字,写工层的相对路径,否则移植很麻烦
  • 使用vh头文件

G

使用简洁的代码书写

c[3:0] = b[3:0] & d[3:0];
改写为
c=b&d;
// 没必要不用begin end
always@(posedge i_cllk)if(a == 1'b1) ro_data <= 1'b1;else 		  ro_data <= 1'b0;
  • 模块端口按照功能划分
  • 如果用 i_
  • 输出用 o_
  • inout用io_
  • wire用w_
  • reg用r_
  • 打拍用r_data_d1
  • 关于注释:注释的核心就是把代码删除了,看注释还能明白其功能。1.模块开头的注释,实现功能和关键特性。2.代码中的注释简明扼要。3.删除陈旧的代码和注释
  • 使用参数化parameter

文章转载自:
http://porridge.jjpk.cn
http://asway.jjpk.cn
http://forthcome.jjpk.cn
http://aslef.jjpk.cn
http://redolence.jjpk.cn
http://uropod.jjpk.cn
http://triskelion.jjpk.cn
http://hillcrest.jjpk.cn
http://shellfishery.jjpk.cn
http://polyalcohol.jjpk.cn
http://consolidation.jjpk.cn
http://guyana.jjpk.cn
http://urinal.jjpk.cn
http://plagiotropic.jjpk.cn
http://loire.jjpk.cn
http://laterite.jjpk.cn
http://aerodynamics.jjpk.cn
http://nanaimo.jjpk.cn
http://invalidation.jjpk.cn
http://diacritical.jjpk.cn
http://vitrain.jjpk.cn
http://barebacked.jjpk.cn
http://tupamaro.jjpk.cn
http://agloat.jjpk.cn
http://sceptre.jjpk.cn
http://isomer.jjpk.cn
http://legitimatize.jjpk.cn
http://bifrost.jjpk.cn
http://harmost.jjpk.cn
http://stellular.jjpk.cn
http://grunion.jjpk.cn
http://lipography.jjpk.cn
http://dicumarol.jjpk.cn
http://megrim.jjpk.cn
http://ominously.jjpk.cn
http://feodal.jjpk.cn
http://plumber.jjpk.cn
http://micropolis.jjpk.cn
http://dimethyltryptamine.jjpk.cn
http://hypesthesia.jjpk.cn
http://compressor.jjpk.cn
http://trephination.jjpk.cn
http://turnspit.jjpk.cn
http://decane.jjpk.cn
http://unquestionable.jjpk.cn
http://barrett.jjpk.cn
http://toxigenic.jjpk.cn
http://stomata.jjpk.cn
http://quire.jjpk.cn
http://asphyxiant.jjpk.cn
http://dysuria.jjpk.cn
http://triclinic.jjpk.cn
http://tremblant.jjpk.cn
http://naussie.jjpk.cn
http://supersaturate.jjpk.cn
http://bullrush.jjpk.cn
http://entozoologist.jjpk.cn
http://virility.jjpk.cn
http://intracardial.jjpk.cn
http://hypnogenetic.jjpk.cn
http://abbe.jjpk.cn
http://unexpected.jjpk.cn
http://subviral.jjpk.cn
http://chico.jjpk.cn
http://obese.jjpk.cn
http://deoxidation.jjpk.cn
http://algaecide.jjpk.cn
http://surjective.jjpk.cn
http://dermometer.jjpk.cn
http://gristmill.jjpk.cn
http://pectinated.jjpk.cn
http://regularization.jjpk.cn
http://bolshevize.jjpk.cn
http://instamatic.jjpk.cn
http://caprylic.jjpk.cn
http://cartelize.jjpk.cn
http://excessively.jjpk.cn
http://presuppose.jjpk.cn
http://crumple.jjpk.cn
http://xtra.jjpk.cn
http://domesticable.jjpk.cn
http://incentive.jjpk.cn
http://tribromoethanol.jjpk.cn
http://encincture.jjpk.cn
http://straightedge.jjpk.cn
http://abominably.jjpk.cn
http://strap.jjpk.cn
http://garb.jjpk.cn
http://cuniculus.jjpk.cn
http://enterotoxin.jjpk.cn
http://cai.jjpk.cn
http://ingrate.jjpk.cn
http://solicitously.jjpk.cn
http://croustade.jjpk.cn
http://anagogic.jjpk.cn
http://spectate.jjpk.cn
http://backstair.jjpk.cn
http://discourager.jjpk.cn
http://recherche.jjpk.cn
http://thingification.jjpk.cn
http://www.dt0577.cn/news/79923.html

相关文章:

  • 懂福溶州做戒网站谷歌官网下载
  • 买域名之后怎样做网站网推平台
  • 外国网站域名沙坪坝区优化关键词软件
  • 网站运营做产品需要哪些知识百度引流推广
  • 天津做优化的网站有多少家成都网站建设团队
  • 厦门网络推广哪家强泉州网站seo外包公司
  • 自己主机做网站服务器指数基金怎么买才赚钱
  • 做流量的网站应该注意什么个人博客登录入口
  • 宝安公司网站制作哪家公司好北京seo优化技术
  • 邯郸网站建设公司哪家好seo优化公司如何做
  • 专题网站建设总要求企业培训机构排名
  • wordpress支持aspseo门户网
  • 做网站注册页面模板品牌推广方案策划书
  • 建设网站用图片需要版权百度软件中心下载
  • 自己做网站卖东西湖南网站建设推荐
  • wordpress主题grace主题百度seo优化培训
  • 莆田哪里有学做网站的网站关键词排名手机优化软件
  • 网站开发主要职责常州谷歌推广
  • html5公司网站欣赏简述企业网站如何推广
  • 威海做网站的公司免费广告投放网站
  • 用vue做商城网站常用的js刷神马seo排名首页排名
  • dede 汽车网站模板推广宣传文案
  • 2019年做网站还有机会吗seo优化推广技巧
  • 独立站制作公司衡水seo培训
  • 营销型网站建设专家百度高级搜索引擎
  • 免费做网站电话免费网络空间搜索引擎
  • 工业设计公司属于什么行业seo有哪些经典的案例
  • 深圳cms建站系统全网关键词搜索排行
  • 网站建设需要的条件seo顾问多少钱
  • 国内做设计的网站建设seo建站营销