首页 > 其他分享 >verilog代码规范

verilog代码规范

时间:2024-03-15 14:24:04浏览次数:25  
标签:wire name 代码 规范 接口 verilog 模块 命名 input

一、项目架构设计

FPGA设计是采用自顶向下,模块化设计的方式,这样便于仿真调试。

注:特别是在整体架构的基础上,能把整体的数据流向和控制逻辑梳理清楚,这样实现起来就很容易。

注意:Verilog是硬件设计语言,跟软件设计有本质区别

二、模块架构设计

基本原则:控制逻辑和数据逻辑分开处理

三、模块接口设计

1、模块定义

主要包括5个部分:端口定义、参数定义(可选)、输入输出接口、内部信号说明、功能定义。

module module\_name#(
       parameter WIDTH = 10;
)(
       input wire clk,
       input wire reset,
       input wire start\_i,
       input wire valid\_i,
       input wire \[WIDTH - 1:0\] data\_i,
       output reg done\_o,
       output reg \[WIDTH - 1:0\] data\_o
);
     ........
enmodule

2、接口时序设计

模块与模块之间的通过接口通信的,所以接口时序规范非常重要。

3、模块输入输出接口规范

(1)考虑时序的要求,注意不允许组合电路输出,需要使用寄存器输出。

(2)接口命名规范

命名必须见名知义,采用英文单词命名,可以使用“[a-z、A-Z、_、0-9]   大小写字母、数字、下划线”表示,注意不能以数字开头。

信号类型

命名规范

模块端口输入

[pin_name]_i

模块端口输出

[pin_name]_o

模块内部寄存器

[reg_name]_r

模块内部连线

[wire_name]_w

时钟信号

clk

复位信号

reset

4、代码设计规范

(1)不使用初始化语句;

(2)不使用延时语句;

(3)不使用循环次数不确定的语句,如:forever,while等;

(4)尽量采用同步方式设计电路;

(5)尽量采用行为语句完成设计;

(6)always过程块描述组合逻辑,应在敏感信号表中列出所有的输入信号;

(7)所有的内部寄存器都应该可以被复位;

(8)用户自定义原件(UDP元件)是不能被综合的。

5、命名规范

(1)顶层文件名命名:对象+功能+top,如video_oneline_top

(2)逻辑控制文件命名:对象+ctr,如:ddr_ctr.v

(3)参数文件命名:对象+para,如lcd_para.v

(4)程序注释说明:如“//”或者“/*...*/”

(5)时钟信号命名:对象+功能+特性,如phy_txclk

(6)计数器命名:对象+cnt+r,如line_cnt_r

(7)复位信号命名:高电平有效:reset,低电平有效:reset_n

标签:wire,name,代码,规范,接口,verilog,模块,命名,input
From: https://www.cnblogs.com/L707/p/18075292

相关文章

  • 代码随想录算法训练营第四十七天 | 337.打家劫舍III,213.打家劫舍II ,198.打家劫舍
     198.打家劫舍 已解答中等 相关标签相关企业 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一......
  • java毕业设计-基于springboot开发的会员制医疗预约服务管理信息系统-毕业论文+答辩PPT
    文章目录前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求分析3、系统功能结构三、系统实现展示1、系统功能模块2、管理员功能模块3、医生功能模块3、会员功能模块四、毕设内容和源代码获取总结java毕业设计-基于springboot开发的会员制医疗预......
  • Java毕业设计-基于springboot开发的4S店车辆管理系统-毕业论文+答辩PPT(附源代码+演示
    文章目录前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1.开发说明2.需求分析3、系统功能结构三、系统实现展示1、系统登录2、管理员功能模块3、销售员功能模块4、维修员功能模块四、毕设内容和源代码获取总结Java毕业设计-基于springboot开发的4S店车辆管理系......
  • VS Code配置Vue3模板代码
    打开VSCode,file-Preferences-ConfigureUserSnippets{"Printtoconsole":{"prefix":"vue","body":["<scriptsetuplang=\"ts\">","i......
  • 代码随想录算法训练营第七天|LeetCode 344.反转字符串、541.反转字符串II、卡码网54.替
    344.反转字符串题目描述:​编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须**原地修改输入数组**、使用O(1)的额外空间解决这一问题。示例一:输入:s=["h","e","l","l","o"]输出:["o","l","l......
  • 【Python】一个实用的爬虫代码示例
    目录思路代码实现反爬需要爬取某个网站的前10个页面的图片,图片包括风景类或者人物类思路使用Python爬取某个网站的前10个页面的图片,并且只获取风景或人物类图片,可以按照以下步骤实现:发送HTTP请求:使用requests库向目标网站发送GET请求,获取页面的HTML内容......
  • 代码随想录算法训练营第十天| 232. 用栈实现队列 225. 用队列实现栈
    232.用栈实现队列https://leetcode.cn/problems/implement-queue-using-stacks/description/classMyQueue{Stack<Integer>stackIn;Stack<Integer>stackOut;publicMyQueue(){stackIn=newStack<>();stackOut=new......
  • 小程序开发平台源码系统:万能建站门店小程序功能 带完整的搭建教程以及代码包
    在移动互联网时代,小程序以其独特的优势,迅速占领了市场的一席之地。然而,对于许多中小企业和个人开发者来说,缺乏专业的开发团队和技术支持,使得小程序开发成为一项难以逾越的技术门槛。小编给大家分享一款万能建站门店小程序源码系统,旨在降低小程序开发的难度,让更多的人能够轻松搭......
  • 二维逆运动学 – 代码
    介绍在本系列的前一部分中,我们讨论了具有两个自由度的机械臂的反向运动学问题;如下图所示。在这种情况下,机械臂的长度和 通常是已知的。如果我们必须到达的点是 ,那么配置就变成了一个三角形,其中所有边都是已知的。然后,我们推导出了角度和的方程,它控制着机械臂关节的旋转:(1......
  • [转]IDEA 打开项目时,代码全被标记为红色
    在IntelliJIDEA中,代码被标记为红色通常表示存在编译错误或无法解析的引用等问题。要解决这个问题,请按照以下步骤进行排查和改进:检查项目结构:确保所有必需的源代码文件夹都被正确地包含在项目的模块设置中。确认项目SDK配置正确无误。在File->ProjectStructure(快捷键:Ctrl+......