欢迎FPGA工程师加入官方微信技术群

点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群

当前最流行的硬件设计语言有两种,即 VHDL 与 Verilog HDL,两者各有优劣,也各有相当多的拥护者。VHDL 语言由美国军方所推出,最早通过国际电机工程师学会(IEEE)的标准,在北美及欧洲应用非常普遍。而 Verilog HDL 语言则由 Gateway 公司提出,这家公司辗转被Cadence所购并,并得到Synopsys的支持。在得到这两大 EDA 公司的支持后,也随后通过了 IEEE 标准,在美国、日本及中国台湾地区使用非常普遍。我们把这两种语言具体比较下:1.整体结构点评:
两者结构基本相似,并行语句的种类也类似;VHDL语言需要进行大量说明,程序通常比较长;Verilog HDL通常不进行说明,或只进行非常简短的说明,程序比较简短。2.数据对象及类型VHDL   常量  信号   变量   9种预定义类型   各类用户定义类型可描述各类不同的量   必须进行类型说明运算时必须考虑类型的一致性和适用性Verilog HDL   常量:数量,参量变量:网络型   寄存器型类型种类少运算时所受的约束少3.运算符号
运算主要分为3类  :
 算术运算  逻辑运算  关系运算  算术运算    VHDL中有10种 但很多都不能进行综合,只能用于行为描述Verilog HDL中只有能够综合的5种逻辑运算   VHDL中 有常用的6种,均用字符形式表达Verilog HDL中有3类共14种,分为一般逻辑运算,位逻辑运算,缩减逻辑运算关系运算   VHDL中有6种Verilog HDL中有2类共8种,对比增加了全等和不全等(用于对不定态比较)。除了以上3类运算外,VHDL中还有连接运算,Verilog HDL中还有连接运算、移位运算和条件运算。点评:VHDL的运算划分比较抽象,适应面较广     Verilog HDL的运算划分比较具体,对逻辑代数反映更细致一些。4.语句
两种语言的语句都分为并行语句和顺序语句,并行语句在主程序中使用,顺序语句只能在子结构中使用;并行语句都分为3种形式:5.子结构
function                         function   'defineprocedure                      task6.附加结构
librarypackage                         'include7.典型程序对比:
8位4选1MUX8位加法器
8位二进制加法计数器序列信号发生器:kser  预先设计模块:8选1MUX:MUX8  控制输入a[2..0] 数据输入d[7..0] 数据输出y3位2进制加法计数器:COUNTER3  时钟输入 clk  状态输出q[2..0]设计要求:按照时钟节拍,由y端口循环顺序输出“11110101”序列信号 初学者往往头疼于选哪种入门合适。其实,随便选一种即可。最关键的是要养成良好的代码编写风格,在满足功能和性能目标的前提下,增强代码的可读性、可移植性。良好代码编写风格的通则概括如下:
(1) 对所有的信号名、变量名和端口名都用小写,这样做是为了和业界的习惯保持一致;对常量名和用户定义的类型用大写;(2) 使用有意义的信号名、端口名、函数名和参数名;(3) 信号名长度不要太长;(4) 对于时钟信号使用clk 作为信号名,如果设计中存在多个时钟,使用clk 作为时钟信号的前缀;(5) 对来自同一驱动源的信号在不同的子模块中采用相同的名字,这要求在芯片总体设计时就定义好顶层子模块间连线的名字,端口和连接端口的信号尽可能采用相同的名字;(6) 对于低电平有效的信号,应该以一个下划线跟一个小写字母b 或n 表示。注意在同一个设计中要使用同一个小写字母表示低电平有效;(7) 对于复位信号使用rst 作为信号名,如果复位信号是低电平有效,建议使用rst_n;(8) 当描述多比特总线时,使用一致的定义顺序,对于verilog 建议采用bus_signal[x:0]的表示;(9) 尽量遵循业界已经习惯的一些约定。如*_r 表示寄存器输出,*_a 表示异步信号,*_pn 表示多周期路径第n 个周期使用的信号,*_nxt 表示锁存前的信号,*_z 表示三态信号等;(10)在源文件、批处理文件的开始应该包含一个文件头、文件头一般包含的内容如下例所示:文件名,作者,模块的实现功能概述和关键特性描述,文件创建和修改的记录,包括修改时间,修改的内容等;(11)使用适当的注释来解释所有的always 进程、函数、端口定义、信号含义、变量含义或信号组、变量组的意义等。注释应该放在它所注释的代码附近,要求简明扼要,只要足够说明设计意图即可,避免过于复杂;(12)每一行语句独立成行。尽管VHDL 和Verilog 都允许一行可以写多个语句,当时每个语句独立成行可以增加可读性和可维护性。同时保持每行小于或等于72 个字符,这样做都是为了提高代码得可读性;(13)建议采用缩进提高续行和嵌套语句得可读性。缩进一般采用两个空格,如西安交通大学SOC 设计中心2 如果空格太多则在深层嵌套时限制行长。同时缩进避免使用TAB 键,这样可以避免不同机器TAB 键得设置不同限制代码得可移植能力;(14)在RTL 源码的设计中任何元素包括端口、信号、变量、函数、任务、模块等的命名都不能取Verilog 和VHDL 语言的关键字;(15)在进行模块的端口申明时,每行只申明一个端口,并建议采用以下顺序:输入信号的clk、rst、enables other control signals、data and address signals。然后再申明输出信号的clk、rst、enalbes other control signals、data signals;(16)在例化模块时,使用名字相关的显式映射而不要采用位置相关的映射,这样可以提高代码的可读性和方便debug 连线错误;(17)如果同一段代码需要重复多次,尽可能使用函数,如果有可能,可以将函数通用化,以使得它可以复用。注意,内部函数的定义一般要添加注释,这样可以提高代码的可读性;(18)尽可能使用循环语句和寄存器组来提高源代码的可读性,这样可以有效地减少代码行数;(19)对一些重要的always 语句块定义一个有意义的标号,这样有助于调试。注意标号名不要与信号名、变量名重复;(20)代码编写时的数据类型只使用IEEE 定义的标准类型,在VHDL 语言中,设计者可以定义新的类型和子类型,但是所有这些都必须基于IEEE 的标准;(21)在设计中不要直接使用数字,作为例外,可以使用0 和1。建议采用参数定义代替直接的数字。同时,在定义常量时,如果一个常量依赖于另一个常量,建议在定义该常量时用表达式表示出这种关系;(22)不要在源代码中使用嵌入式的dc_shell 综合命令。这是因为其他的综合工具并不认得这些隐含命令,从而导致错误的或较差的综合结果。即使使用Design Compiler,当综合策略改变时,嵌入式的综合命令也不如放到批处理综合文件中易于维护。这个规则有一个例外的综合命令,即编译开关的打开和关闭可以嵌入到代码中;(23)在设计中避免实例化具体的门级电路。门级电路可读性差,且难于理解和维护,如果使用特定工艺的门电路,设计将变得不可移植。如果必须实例化门电路,我们建议采用独立于工艺库的门电路,如SYNOPSYS 公司提供的GTECH 库包含了高质量的常用的门级电路;(24)避免冗长的逻辑和子表达式;(25)避免采用内部三态电路,建议用多路选择电路代替内部三态电路。-END-

欢迎通信工程师和FPGA工程师关注公众号

全国第一大FPGA微信技术群

欢迎大家加入全国FPGA微信技术群,这个群体拥有数万工程师、一群热爱技术的工程师,这里的FPGA工程师相互帮助,相互分享,技术氛围浓厚!赶紧叫上小伙伴一起加入吧!

用手指按住就可以加入FPGA全国技术群哦

FPGA之家元器件芯城

优势元器件服务,有需求请扫码联系群主:金娟 邮箱:293580331@qq.com 欢迎推荐给采购

ACTEL、AD部分优势订货(经营全系列):

XILINX、ALTERA优势现货或订货(经营全系列):

(以上器件为部分型号,更多型号请咨询群主金娟)

服务理念:FPGA之家元器件自营芯城,旨在方便工程师快速方便购买器件服务,经过数年竭诚服务,我们的客服遍布国内大型上市公司、军工科研单位、中小企业、最大的优势是强调服务至上的理念、并且做到快速交货、价格优惠!

直营品牌:Xilinx ALTERA ADI TI NXP ST E2V、镁光 等百余元器件品牌,尤其擅长欧美对华禁运器件,欢迎工程师朋友把我们推荐给采购或者亲自咨询我们!我们将一如既往提供业内最佳服务!

FPGA技术群官方鸣谢品牌:Xilinx、 intel(Altera)、microsemi(,Actel)、LattIC e,Vantis,Quicklogic,Lucent等

4位先行进位加法器的vhdl程序_VHDL精密,Verilog简洁,但要写好都要遵守这25条通则...相关推荐

  1. 4位先行进位加法器的vhdl程序_CPU是如何执行程序的?

    前言 代码写了那么多,你知道 a = 1 + 2 这条代码是怎么被 CPU 执行的吗? 软件用了那么多,你知道软件的 32 位和 64 位之间的区别吗?再来 32 位的操作系统可以运行在 64 位的电 ...

  2. hnu 数字电路 实验2.4 4位先行进位加法器

    4.用VHDL语言设计一个4位先行进位加法器 ① 理解要求,需要完成一个先行进位加法器,可采取化简后的公式,直接用逻辑门构造一个4位先行进位加法器. ② 公式和原理图: ③ 打开QuartusII,新 ...

  3. 16位先行进位加法器--原理篇

    前话 这个加法器写的是一波三折啊,昨天晚上花了两三个小时好不容易写完编译通过了,之后modelsim莫名其妙弹出一个对话框,我没看清就那么不小心一点,结果代码没了,惨痛啊.害的我今天早上又花了一上午的 ...

  4. 4位先行进位加法器_行波进位/超前进位加法器详解

    行波进位加法器是串行执行的,其高位的运算要依赖低位的进位,所以当输入数据的位数较多时,会形成很大的延迟并可能成为芯片的关键路径. 采用超前进位加法器(也叫先行进位加法器)可以有效减小这种延迟.下面介绍 ...

  5. 二进制加法器的VHDL程序

    在上一篇文章中我们讨论了二进制加法器的原理,在此我们给出二进制加法器的VHDL描述: library IEEE; use IEEE.std_logic_1164.all;package std_log ...

  6. 所有程序员都应该遵守的11条规则

    我是一个倾向于生活在规则下的人. 现在,这些规则大部分是我本人为自己设立的,但它们依然是规则. 我发现为自己创建规则可以让我过得更好,因为这样做可以提前决定一些事情,而不是要在匆忙中做出所有的决定. ...

  7. 计算机组成原理快速加法器与32位ALU设计实验报告(8位可控加减法电路设计、CLA182四位先行进位电路设计、4位快速加法器设计、16位快速加法器设计、32位快速加法器设计)

    实验二 快速加法器与32位ALU设计实验 本次实验,进行了五个实验,分别是8位可控加减法电路设计.CLA182四位先行进位电路设计.4位快速加法器设计.16位快速加法器设计.32位快速加法器设计.这次 ...

  8. 第5关:32位快速加法器设计

    实验目的 帮助学生理解成组进位产生函数,成组进位传递函数的概念,熟悉 Logisim 平台子电路的概念,能利用前述实验封装好的4位先行进位子电路以及4位快速加法器子电路构建16位.32位.64位快速加 ...

  9. 第4关:16位快速加法器设计

    实验目的 帮助学生理解成组进位产生函数,成组进位传递函数的概念,熟悉 Logisim 平台子电路的概念,能利用前述实验封装好的4位先行进位子电路以及4位快速加法器子电路构建16位.32位.64位快速加 ...

最新文章

  1. 算力“竞速”,企业AI落地的当务之急
  2. 架构设计开发方式汇总
  3. 我们常常意识不到问题的存在,直到有人解决了这些问题
  4. jQuery插件(多级菜单)
  5. optimizer_mode优化器模式
  6. 六款值得推荐的数据挖掘得力助手
  7. VS2010 调试C++项目 fatal error LNK1123 错误解决的方法
  8. SQL第四周学习笔记---python操作数据库、游标、sqlite、mysql数据库银行转账
  9. 计算机网卡ip怎么设置,怎样为网卡配置ip地址 电脑给网卡设置IP地址的方法有哪些...
  10. MPQ Storm库 源代码分析 一个
  11. 我最喜爱的九位历史人物 - 苏轼(Space搬家)
  12. 计算机进入启动死循环,教你win10重启死循环怎么解决
  13. 为浏览器添加Bing搜索引擎
  14. 2D Skinned Mesh(3D的完全翻版 带旋转)
  15. ssh整合(spring+springmvc+hibernate)
  16. python中bytes_Python3中的bytes和str类型
  17. python dataframe是什么_什么是Pandas的DataFrame?
  18. VUE监听页面刷新和关闭事件
  19. 《经济机器是怎样运行的》笔记(三)
  20. 通付盾受邀出席区块链技术和应用峰会暨第五届中国区块链开发大赛成果发布会及颁奖仪式

热门文章

  1. 洛谷P3899 [湖南集训]谈笑风生
  2. java添加tomcat_Java以及Tomcat配置
  3. 输入一个百分制成绩,要求输出成绩等级A、B、C、D、E,其中90-100分为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。
  4. TextSeek使用教程 (高级篇) - 文件搜索软件
  5. AAAI 2023 | 基于联合学习与用户传播行为的虚假新闻早期检测
  6. 用editplus删除csv文件中的软回车
  7. [MFC] CList
  8. RFID打印机和条码打印机的4大区别
  9. 【POJ3281】Dining 网络流
  10. 程序员如何实现“互联网+”03-为什么需要有个网站