没有合适的资源?快使用搜索试试~ 我知道了~
首页Verilog语言编程规范
Verilog语言编程规范
![](https://csdnimg.cn/release/wenkucmsfe/public/img/star.98a08eaa.png)
Verilog语言编程规范,适合FPGA提高者,对verilog编程规范有很大提高。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/6024691/bg1.jpg)
前 言
范围
术语
代码标准
命名规范
文件命名
代码命名总则
注释
文件头
其它注释
编程风格
编写代码格式要整齐
使用二到四个空格符缩排
一行一条 语句
一行一个端口声明
在定义端口时,按照端口类型或端口功能定义端口顺序。
保持端口顺序一致。
声明内部
在一个段内声明所有内部
代码流中不同结构之间用一空行隔开
模块划分和重用
不能访问模块外部的 和
不使用 编译指令
建议模块的端口信号尽可能少。
时钟产生电路单独构成一个模块
划分时钟域
物理和逻辑边界的匹配
特定应用代码要单独划分出来
关键时序逻辑划分
数据流逻辑划分
异步逻辑划分
状态机划分
控制逻辑和存储器划分
逻辑设计经验
时钟域要尽可能少,所用时钟尽可能加全局 !"##
异步接口信号同步化
避免寄存器的数据与时钟异步
使用无毛刺的门控时钟使能信号
直接作用信号无毛刺
![](https://csdnimg.cn/release/download_crawler_static/6024691/bg2.jpg)
初始化控制存储元件
使用同步设计
避免组合反馈环
常用编程技巧
条件表达式的值必须是一个单 值
总线位顺序按高到低保持一致
不要给信号赋 $ 值
寄存器变量只能在一个 %&' 语句中赋值
对常量使用参数而不使用文本宏
不能重复定义参数
不能重复定义文本宏
保持常量之间的联系
状态编码的参数使用
(、 ) 配合使用
用基地址*地址偏移量生成地址
使用文本宏表示寄存器字段位置和值
) ) 的嵌套限制在三层以内
操作数的位宽必须匹配
模块调用时端口要显式引用
矢量端口和 + 声明的位宽要匹配
避免 类型的端口
在复杂的表达式中使用括号
常用综合标准
%&'的敏感列表要完整
一个 %&'的敏感列表中只能有一个时钟
只使用可综合的结构
组合逻辑的条件需完备
循环结构中禁用 ' 语句
避免无界循环
端口连接禁用表达式
禁用 ,-
边沿敏感结构中使用非阻塞赋值(./)
0 使用非阻塞赋值
模块闲置的输入端不要悬空
连接模块闲置的输出端
函数中不要使用锁存器
禁用 '$
多周期路径的信号使用单周期使能信号
三态元件建模
![](https://csdnimg.cn/release/download_crawler_static/6024691/bg3.jpg)
避免顶层胶合逻辑
在 ' 语句中使用 ) 赋值语句
)1' 综合命令的使用
附录 编译器不支持的 结构
附录 和 关键词列表
![](https://csdnimg.cn/release/download_crawler_static/6024691/bg4.jpg)
前 言
编写本标准的目的是为了统一部门内部 #234562 设计用 语言编程风格,
提高 设计源代码的可读性、可靠性和可重用性,减少维护成本,最终提高产品生
产力;并且以此作为代码走查的标准。
此标准以公司的《 语言编程规范》为蓝本,有所增删。
本规范的内容包括:本规范定义了语言的编程方面的准则。主要包括:设计命
名规范、注释、编程风格、模块划分和重用、逻辑设计经验、常用编程技巧、结构化测试
技术准则以及常用综合标准。
本标准的附录 、附录 是资料性附录。
本标准主要起草人:77。
本标准于 7 年 7 月发布。
![](https://csdnimg.cn/release/download_crawler_static/6024691/bg5.jpg)
范围
本标准规定了 语言的编程规范。
本标准适用于部门内使用 语言编码的所有可编程逻辑设计(#234+62)设
计。本规范自生效之日起,对以后新编写的和修改的代码有约束力。
术语
HDL :Hardware Description Language
RTL :Register Transfer Level
PLL :Phase Locked Loop
UDP :User Defined Primitive
VC :Visual Component
代码标准
命名规范
文件命名
一个模块为一个文件。
在进行逻辑设计和划分时,可以按照功能或者接口对设计进行划分,划分的模块不宜
过大或者过小,以免一个文件中的代码行过多降低了设计的可读性;过小会使设计的管理
较为麻烦,也不易理解设计。原则上设计的文件只包含一个模块。
一个文件应该为一个模块
原因:便于模块的修改
顶层文件的命名规范
文件名构成:
有片或片以上的#234时采用: 单板名1功能1),1,,表示第几片#234
只有片#234时采用 : 单板名1),1,
原因: 便于理解是哪块单板的 #234。
模块文件的命名规范
功能模块:
要求采用模块功能命名如:
1-$上行复用模块
模块层次尽可能不要超过层,低层模块的命名要求包含上层模块名如:
1-$1上行复用寄存器模块
原因: 便于理解是#234的模块层次结构、功能,调用的89:6模块除外。
core:
:4; : -深度$位宽
双口:4; : ,-深度$位宽
##9 : ()深度$位宽
移位寄存器 : '0)深度$位宽
Verilog 语言编程规范
剩余23页未读,继续阅读
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)