Verilog HDL 语言书写规范
来源:互联网 发布:php登录页面完整代码 编辑:程序博客网 时间:2024/05/22 00:47
0. verilog HDL 命名规则
1. Verilog HDL 文件头编写规范
- 1.文件头需要包含版本信息
- 2.包含个人信息及文件的描述
- 3.包含版本的记录
/* ======================== Filename ﹕ Author ﹕Description ﹕Called by ﹕Revision History ﹕Revision 1.0Email ﹕ Company ﹕ Robsense Technology .IncCopyright(c) 2015, xxxx Technology Inc, All right reserved ========================= */
2. Module 列表编写规范
`timescale 1ns/1nsmodel Verilog_Template( //global clock input clk, //50MHz input rst_n, //global reset //user interface output [7:0] led_data //board test led);endmodel;
- 1.无论是否仿真,module前必须写
`timescale 1ns/1ns
- 2.全局时钟及复位卸载最前,分别命名为clk 及 rst_n (多时钟时可用 clk_50, clk_24区分)
- 3.相关的信号根据时钟、复位、时能、控制端的顺序规划再一起,同时必须有注释
- 4.所有输入/输出、信号命名等,都必须严格对齐
- 5.所有信号注释必须全部对齐
- 6.为了解决不同编辑器的兼容,TAB用4个空格来代替
- 7.禁止使用中文注释
- ×8.有必要的情况下,需要让逗号也对齐
3.always模块编写规范
//----------------------//Generate for is delay signal localparam DELAY_TOP = 28'd50_000000; 1sreg[27:0] delay_cnt;always@(posedage clk or nogedage rst_n)begin if(!rst_n) delay_cnt <= 0; else if(delay_cnt < DELAY_TOP - 1'b1) delay_cnt <= delay_cnt + 1'b1; else delay_cnt <= 0;end//counter for 1s delay is completedwire delay_1s = (delay_cnt == DELAY_TOP -1'b1)? 1'b1 : 1b'0;
- 1.每一个always模块,必须自称体系,且都必须又功能介绍
- 2.相关寄存器定义,必须写在当前always模块前
- 3.相关的宏定义,也必须写在当前always模块前
- 4.所有的if, else必须对齐
- 5.else必须写完整
- 6.信号位宽必须写完整
- 7.每一个逻辑符号前后都要空一格
- 8.单/总连出(delay_1s),写在always模块最后
4.Module的例化编写规范
//------------------//Generate water led displayled_input_display#( .LED_WIDTH (8))u_led_input_display( //global clock .clk (clk), .rst_n (rst_n), //led interface .led_en (1'b1), .led_value (led_value), .led_data (led_date));
对于Moduel的例化,相当于C语言中的调用函数,需要注意信号列表的格式:
+ 1.每一个Module再例化前必须又module的功能说明
+ 2.Module的例化名采用u_xx的格式
+ 3.信号列表及wire都必须完全对齐
+ 4.相关信号必须写在一起,并且有注释
5.Testbench代码设计风格
1.Testbench文件头编写规范
具体设计格式参照Verilog代码风格。
2.Module列表编写规范
`timescale 1ns/1nsmodule Testbench_tb;wire [7:0] led_data; //led testendmodule
Testbench 不同于Verilog HDL的地方是没有输入/输出类的信号定义,每个激励都是再当前文件中生成的,唯一与外界通信的wire是直连接道需要测试的Module上的。还应该遵循规范:
+ 1.Module前必须写`timescale 1ns/1ns
+ 2.Module后紧跟Testbench需要输出的信号(当模块多时, 紧跟当前modul)
+ 3.相关信号必须卸载一起,并且注释。
+ ×4.设计wire测试信号,测试脚本更加清晰。
后续会继续补充
0 0
- Verilog HDL 语言书写规范
- Verilog HDL代码书写规范
- Verilog HDL代码书写规范
- 认识Verilog Hdl语言
- Verilog 代码 书写规范
- Verilog HDL语言学习笔记
- 详细学习Verilog Hdl语言
- Verilog HDL语言的使用
- Verilog HDL语言的用户自定义元件
- Verilog HDL语言的用户自定义元件
- PLD - VHDL和Verilog HDL语言对比
- Verilog HDL语言的计数器程序
- HLS:c/c++语言到Verilog HDL
- VHDL & Verilog HDL 语言编程的经验之谈
- 用Verilog HDL语言实现UART通信
- [Verilog]个人.v文件书写规范
- C语言书写规范
- C语言书写规范
- 【JZOJ4915】最长不下降子序列
- C语言二叉树结构数组法
- 复选框checkbox 获取已选中的值
- 2016 工作、生活与得失
- mybatis 中 foreach collection的三种用法
- Verilog HDL 语言书写规范
- 算法导论——2.3-2无哨兵情况下的归并排序
- leetcode——2Add Two Numbers
- 手动将jar文件加到Maven的local repository中
- GIT 第一问 怎么删除github上的仓库
- php伪静态重写规则
- Swit轉場動畫的簡單分析
- clock()、time()、clock_gettime()和gettimeofday()函数的用法和区别
- 抽象类和虚基类的定义及用途