VHDL与Verilog HDL的对比以及三中建模方式
VerilogHDL和VHDL的区别

VerilogHDL和VHDL的区别VHDL和Verilog HDL 的区别低层次建模VHDL和Verilog HDL都可以描述硬件,然后,在低层次硬件描述上VERILOG HDL好于VHDL。
这是因为Verilog HDL最初就是⽤来创建和仿真逻辑门电路的。
实际上,Verilog HDL有内置的门或者是低层次的逻辑门,因此,设计者能够⽤Verilog代码实例门电路⽽在VHDL中不可以。
Verilog的门级元件有:and, nand, or, nor, xor, xnor, buf, not, bufif0, notif0, bufif1, notif1, pullup, pulldown.Verilog的开关级元件有:pmos, nmos, rpmos, rnmos, cmos, rcmos, tran, rtran, tranif0, rtranif0, tranif1, rtranif1.更加重要的是,Verilog⽀持⽤户⾃定义元件,因此,设计者可以定义他们⾃⼰的单元元件。
这个特点对于ASIC的设计者来说是必须和受欢迎的。
VHDL同样有⼀些低层次的嵌⼊式的逻辑门,如NOT, AND, NAND, OR, NOR, XOR, XNOR.举例如下:or u1(x,y,z); (in Verilog) <=> x <= y OR z; in VHDLand u2(i1,i2,i3); (in Verilog) <=> i3 <= i2 AND i3; in VHDL⾼层次建模另⼀⽅⾯,在⾼层次硬件建模⽅⾯,VHDL⽐Verilog HDL要强。
VHDL⽐Verilog HDL提供了更多的特点和构造结构,这些使得VHDL更适合⾼层次建模。
在⽐较VHDL和Verilog后,以下⼏个主要不同的特点来⽀撑⾼层次建模。
1、在VHDL中,⽤户⾃定义数据类型Verilog有⾮常简单的数据类型,这些数据类型全部由Verilog语⾔⾃⼰定义(⽤户不能⾃⼰定义数据类型)。
verilog和VHDL混合编译仿真

verilog和VHDL混合编译仿真在实际项⽬中,由于项⽬经历了较多的版本更迭或者设计⼈员的技术⽔平限制,有些时候难免有使⽤到verilog的代码和VHDL代码共同存在⼀个项⽬中的情况,那这个时候我们要怎样进⾏混合编译仿真验证呢?这⾥以使⽤vcs⼯具编译verdi查看波形为例:如果我们设计代码是vhdl版本的,但是还想使⽤更⾼级的代码verilog或者systemverilog作为它的顶层tb,并且还想使⽤uvm的组件来搭建更⽅便的验证环境,那么整个环境的编译和执⾏过程如下:1.需要准备的软件vcs-mx和verdi,其中vcs-mx版本会有vlogan和vhdlan两个编译程序2.开始编译编译vhdl的代码,dut_src.f是vhdl的⽂件列表:vhdlan -nc dut_src.f -l cmp_vhdl.log编译uvm库的sv代码:vlogan -full64 -timescale=1ns/1ps +v2k -sverilog -ntb_opts uvm -l cmp_uvm.log编译我们⾃⼰设计的sv代码和⾃⼰设计的uvm各个组件部分的代码,tb.f是⽂件列表:vlogan -full64 -timescale=1ns/1ps +v2k -sverilog tb.f -ntb_opts uvm -l cmp_verilog.log编译vhdl和verilog各⾃的库⽣成可执⾏⽂件simv:vcs -timescale=1ns/1ps -ntb_opts uvm -top tb_top -debug_access+pp -fsdb -j56 -cm line+fsm+tgl+cond -lint=TFIPC-L +nbaopt +rad +notimingchecks +nospecify +error+30run起来,⽣成波形,其中TC_NAME是传⼊的tc参数:./simv -cm line+fsm+tgl+cond +fsdb+force +fsdbfile+../wave/tb_top.fsdb +UVM_TESTNAME=$(TC_NAME)3.查看波形编译出verdi可以查看的库,使⽤vhdlcom是编译vhdl⽂件的库,vericom是编译verilog⽂件的库vhdlcom -lib my_work dut_src.fvericom -lib my_work -sv tb_top.sv使⽤verdi打开波形⽂件:verdi -lib my_work -top tb_top -ssf tb_top.fsdb。
四位全加器的VHDL与VerilogHDL实现

entity pro1is
port(A1,B1,G1BAR,A0,B0,G0BAR:instd_logic;
or(cout,m1,m2,m3);
ﻩendmodule
ﻩ/*module add(co,s,a,b,ci);//数据流法
ﻩoutput[3:0] s;
ﻩoutput co;
ﻩinput[3:0] a,b;
ﻩinput ci;
ﻩassign {co,s}=a+b+ci;
ﻩendmodule*/
libraryIEEE;
endmodule
module full_add1(a,b,cin,sum,cout);
ﻩinput a,b,cin;
ﻩoutput sum,cout;
ﻩwire s1,m1,m2,m3;
and(m1,a,b),
(m2,b,cin),
ﻩ(m3,a,cin);
xor(s1,a,b),
ﻩ(sum,s1,cin);
四位全加器的VHDL与VerilogHDL实现
———————————————————————————————— 作者:
———————————————————————————————— 日期:
四位全加器的VHDL/VerilogHDL实现
加法器的分类
(一)半加器
能对两个1位二进制数进行相加而求得和及进位的逻辑电路称为半加器。或:只考虑两个一位二进制数的相加,而不考虑来自低位进位数的运算电路,称为半加器。图1为半加器的方框图。图2为半加器原理图。其中:A、B分别为被加数与加数,作为电路的输入端;S为两数相加产生的本位和,它和两数相加产生的向高位的进位C一起作为电路的输出。
vhdl转verilog hdl的规则

vhdl转verilog hdl的规则VHDL转Verilog HDL的规则引言:VHDL(VHSIC Hardware Description Language)和Verilog HDL 都是硬件描述语言,用于描述数字电路的功能和结构。
在实际的工程中,经常会遇到需要将VHDL代码转换为Verilog HDL的情况。
这篇文章将介绍VHDL转Verilog HDL的规则,以帮助读者成功完成转换过程。
一、了解VHDL和Verilog HDL的语法差异在进行VHDL转Verilog HDL之前,我们需要了解这两种语言的语法差异。
以下是一些常见差异的例子:1. 信号声明:- VHDL: signal a, b, c: std_logic;- Verilog HDL: reg a, b, c;2. 过程和行为描述- VHDL: process (a, b) is begin ... end process;- Verilog HDL: always @(a or b) begin ... end3. 选择结构- VHDL: case (a) is when "00" => ... end case;- Verilog HDL: case (a) "00": ... endcase;二、代码整理准备在进行VHDL转Verilog HDL之前,我们需要对VHDL代码进行整理和准备。
以下是一些常见的准备步骤:1. 删除VHDL中不支持的语法Verilog HDL不支持VHDL中的某些特性,如非标准包等。
在转换过程中,我们应该删除这些不支持的语法。
2. 替换数据类型VHDL中的数据类型和Verilog HDL有所不同,我们需要逐一替换VHDL数据类型为对应的Verilog HDL数据类型。
3. 检查命名规范VHDL和Verilog HDL在命名规范上有所不同。
在进行转换之前,我们需要检查VHDL代码中的命名规范是否符合Verilog HDL的要求,并进行相应的修改。
VHDL 和 Verilog HDL 的区别

VHDL 和Verilog HDL 的区别1. VHDL语言的特点:a.VHDL是强类型语言:不同数据类型之间不能赋值(可用转换函数实现赋值)不同数据类型之间不能运算(可调用程序包重载操作符)b.VHDL不区分大小写(连保留字也不区分大小写)Verilog HDL则没有数据类型匹配要求(自动转换),区分大小写(大小写含义不同)2. 输入、输出端口:VHDL中有in out inout buffer四种,端口默认为内部信号(有寄存器端口)buffer端可以反馈,但不能连接其他元件端口,实际使用时常用内部signal来代替buffer端口Verilog HDL中只有input output inout,默认为wire类型(无寄存器端口)verilog HDL中的reg类型数据可以代替VHDL的内部signal(内部寄存器)VHDL 与Verilog HDL 硬件设计语言的较量!当前最流行的硬件设计语言有两种,即VHDL 与Verilog HDL,两者各有优劣,也各有相当多的拥护者。
VHDL 语言由美国军方所推出,最早通过国际电机工程师学会(IEEE)的标准,在北美及欧洲应用非常普遍。
而Verilog HDL 语言则由Gateway 公司提出,这家公司辗转被美商益华科技(Cadence)所购并,并得到美商新思科技(Synopsys)的支持。
在得到这两大EDA 公司的支持后,也随后通过了IEEE 标准,在美国、日本及中国台湾地区使用非常普遍。
两者的比较如下:(1)数据类型:VHDL 允许使用者自定义数据类型,如抽象数据类型,这种特性使得系统层级的建模较为容易。
相比于VHDL,Verilog HDL 语言的主要数据类型就简单许多,其数据类型的定义完全是从硬件的概念出发。
对于初学者来说,这可能是其优点,能将思维概念放在电路设计本身。
不过,这也使得Verilog HDL 在系统级建模的能力较弱,但新一代的Verilog HDL 语言,如Verilog-2001 及SystemVerilog 等,就针对系统级的部分进行了加强,且完全向下兼容。
VHDL与Verilog语言

VHDL与Verilog语言VHDL(VHSIC hardware description language)和Verilog是用于电子系统设计的硬件描述语言(HDL)。
这两种语言被广泛应用于数字逻辑设计和仿真,以及硬件描述、验证和综合。
1. VHDL(VHSIC hardware description language)VHDL是一种结构化的硬件描述语言,最初由美国国防部高速集成电路计划办公室(VHSIC,Very High Speed Integrated Circuits)开发。
VHDL以其强大的功能和灵活性而闻名,并被广泛用于数字系统的设计和验证。
VHDL的编写包括实体(Entity)和体(Architecture)两个主要部分。
实体部分描述了数字系统的输入输出接口、信号和组件的声明,而体部分描述了实体的内部结构、信号处理和逻辑功能。
VHDL具有丰富的数据类型、运算符和控制结构,可以方便地描述数字电路的行为和结构。
它还提供了强大的仿真和验证功能,使设计人员能够在开发和测试阶段快速迭代和调试设计。
2. VerilogVerilog是一种硬件描述语言,最初由Gateway Design Automation公司(现在是Cadence Design Systems的一部分)开发。
Verilog以其简洁的语法和易学易用的特性而受到广泛欢迎,并成为工业界标准。
Verilog的设计由模块(Module)组成,每个模块描述了一个黑盒子,包含输入和输出端口以及内部的逻辑功能。
模块可以进行层次化组合,从而实现较复杂的系统级设计。
Verilog的语法类似于C语言,具有类似的数据类型、运算符和控制结构。
它还提供了时序建模的能力,使设计人员能够描述数字电路的时序行为。
3. VHDL与Verilog的比较VHDL和Verilog在语法和功能上有一些区别,但它们都可以用于数字电路的设计和仿真。
以下是它们之间的一些比较:3.1 语法风格VHDL采用结构化的编程风格,需要明确的体、过程和信号声明,可以更好地控制和描述系统的结构和行为。
选择VHDL还是Verilog

选择VHDL还是Verilog?有很多的初学者对选择哪一门语言进行学习总是很迷惑,本文将剖析这两种语言的优势和不足,好给大家一个参考。
技术上:VHDL语法严谨、规范,结构性好,适用于较高抽象层次的描述,但比较复杂。
Verilog简单易用,语法具有亲和力,可描述底层晶体管,但先天上的语法不够严谨的特点也让其在很多领域的发展受限制。
地域上:VHDL在欧洲用的比较多,Verilog在美洲用的比较多。
在中国国内,由于VHDL推广较早,所以应用广泛,尤其在研究所和高校中,但近几年,Verilog也受到了很多企业的青睐。
应用上:在许多大型的需要更多行为级描述的场合,VHDL比较适用,在需要底层描述的地方,用Verilog比较合适。
综合还说,VHDL和Verilog两种语言以及其衍生的工具在全球EDA市场上的占有率,难分伯仲。
就个人而言,选择那种语言在很大程度上并不随意而定的,而是要结合实际的工作环境、手边的工具、资料以及以往的设计和周边人群而定。
我们建议在学习这两种语言时,要精通一种,而另一种达到了解就可以,这是一种比较好的选择。
这两天在更新教程的时候想到的:很多初学者在学习初期,经常为是学习VHDL还是学习Verilog间纠结。
其实,与其纠结,还不如静下心,抓紧时间,就某种语言好好学习。
我以前也纠结过,在那段时间里不断的咨询别人学那个好,一上网就查哪个更受欢迎,就怕学了个偏门的,白费力气白学一场…..但现在回过头来看看,觉的当初真没有必要。
既然这两种语言在市场上存在了这么久,那就说明它们是适应市场需要的,既然谁都没有灭掉谁,那说明两者语言各个利弊。
而且学会了一种后,另外一种也能很快学会,我觉的这可能是因为这两种语言最终的目的都是在逻辑器件上形成硬件电路,所以语言中也贯穿这可编程逻辑器件的一些本质的东西(e.g.并行处理)。
所以,学好了某种语言,掌握了这些本质,然后再去学另一种语言,也就有点似曾相识,融会贯通的感觉了。
Verilog-HDL基础知识

Verilog-HDL基础知识第⼆章 Verilog-HDL基础知识1.Verilog-HDL概述1.1 什么是硬件描述语⾔(HDL)HDL:Hardware Description Language硬件描述语⾔HDL是⼀种⽤形式化⽅法描述数字电路和系统的语⾔,可以描述硬件电路的功能、信号连接关系和定时关系。
1.2 使⽤HDL的优点电路的逻辑功能容易理解;便于计算机对逻辑进⾏分析处理;把逻辑设计与具体电路的实现分成两个独⽴的阶段来操作;逻辑设计与实现的⼯艺⽆关;逻辑设计的资源积累可以重复利⽤;可以由多⼈共同更好更快地设计⾮常复杂的逻辑电路(⼏⼗万门以上的逻辑系统)。
1.3 Top_Down设计思想1.4 Verilog-HDL简介1.4.1 Verilog HDL的发展1.4.2 Verilog-HDL与VHDL的⽐较☆ VHDL-VHSIC Hardware Description Language。
VHDL于 1987年成为IEEE标准。
☆ Verilog-HDL简单易学,语法⽐较灵活。
VHDL语法严谨,需要较长的时间学会。
☆ Verilog-HDL在系统抽象⽅⾯⽐VHDL略差,但在门级开关电路描述⽅⾯⽐VHDL强。
1.4.3 Verilog-HDL 的应⽤ASIC和FPGA设计师可⽤它来编写可综合的代码。
描述系统的结构,做⾼层次的仿真。
验证⼯程师编写各种层次的测试模块对具体电路设计⼯程师所设计的模块进⾏全⾯细致的验证。
库模型的设计:可以⽤于描述ASIC 和FPGA的基本单元(Cell)部件,也可以描述复杂的宏单元(Macro Cell)。
1.4.4 Verilog-HDL的抽象级别⽤Verilog-HDL描述的电路设计就是该电路的Verilog HDL模型,这些模型可以是实际电路的不同级别的抽象,这些抽象的级别和它们对应的模型类型共有以下五种:?系统级(system): ⽤⾼级语⾔结构实现设计模块的外部性能的模型。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本文将以二选一多路器为例,分别用Verilog HDL 和VHDL 描述电路。
二选一多路器的门级结构:HDL 建模时,除了可以用不同层次的基本描述方式建模外,还可以根据七对信号描述方式的不同划分为三种:数据流建模,行为建模,结构化建模;在模块中对信号资源分配(或组合逻辑的连接)的描述称为数据流描述或数据流建模。
在模块中对信号的行为进行描述,称为行为描述或行为建模。
将特定功能的模块组织成更大的模块,其描述方式称为结构化描述或结构化建模。
下面是用VHDL 描述的二选一多路器,采用数据流建模方式。
library ieee;use ieee.std_logic_1164.all;entity mux_dataflow is port (a : in std_logic;b : in std_logic;sel : in std_logic; c : out std_logic);end mux_dataflow;architecture dataflow of mux_dataflow is beginA 图2 二选一多路器的门级结构(国外常用符号) VHDL 所用的库和标准 实体和端口说明,加粗的是关键字 结构体,说明建模方式,加粗是关键字端口声明和类属声明c<=(a and not sel) or (b and sel);end dataflow;●下面是用Verilog HDL描述的二选一多路器,采用数据流建模方式。
module mux_dataflow (a,b,sel,c);input a,b,sel;output c;wire c;assign c= (a & ~sel) | (b & sel);endmodule●下面是用VHDL的行为建模方式描述二选一多路器。
library ieee;use ieee.std_logic_1164.all;entity mux_behaviour isport( a : in std_logic;b : in std_logic;sel : in std_logic;c : out std_logic);end mux_behaviour;architecture behaviour of mux_behaviour isbeginmux_process: process (a,b,sel)beginc<=(a and not sel) or (b and sel);end process ;end behaviour;●下面是用Verilog HDL描述的二选一多路器,采用行为建模方式。
module mux_behaviour(a,b,sel,c);input a,b,sel;output c;reg c;always @(a,b,sel)beginc<= (a& ~sel) |(b&sel);endendmodule虽然表达式几乎相同,但是他们有本质的不同。
数据流建模方式侧重于信号怎么做。
行为建模方式侧重于信号做什么。
下面是用VHDL描述的二选一多路器,采用结构体建模方式。
library ieee;use ieee.std_logic_1164.all;entity mux_structure isport( a : in std_logic;b : in std_logic;sel : in std_logic;c : out std_logic);end mux_structure;architecture structure of mux_structure iscomponent and_gateport( a : in std_logic;b : in std_logic;c : out std_logic);end component;component or_gateport( a : in std_logic;b : in std_logic;c : out std_logic);end component;component inverterport( a : in std_logic;c : out std_logic);end component;signal x0,x1,x2 : std_logic;结构体信号声明beginu0 : inverter port map(a => sel, c => x0);u1 : and_gate port map(a => b, b => sel, c => x1);u2 : and_gate port map(a => x0, b => a, c => x2);u3 : or_gate port map(a => x1, b => x2, c => c);end structure;---------------------and_gate-----------------------library ieee;use ieee.std_logic_1164.all;entity and_gate isport( a : in std_logic;b : in std_logic;c : out std_logic);end and_gate;architecture dataflow of and_gate isbeginc<=a and b;end dataflow;----------------------or_gate------------------------library ieee;use ieee.std_logic_1164.all;entity or_gate isport( a : in std_logic;b : in std_logic;c : out std_logic);end or_gate;architecture dataflow of or_gate isbeginc<= a or b;end dataflow;----------------------inverter----------------------library ieee;use ieee.std_logic_1164.all;entity inverter isport( a : in std_logic;c : out std_logic);end inverter;architecture dataflow of inverter isbeginc<= not a;end dataflow;下面是用Verilog HDL描述的二选一多路器,采用结构体建模方式。
module mux_structure(a,b,sel,c);input a,b,sel;output c;wire x0,x1,x2;and_gate a1(.a(a),.b(x0),.c(x1));and_gate a2(.a(sel),.b(b),.c(x2));实例化模块or_gate o1(.a(x1),.b(x2),.c(c));inverter i1(.a(sel),.c(x0));endmodulemodule and_gate(a,b,c);//双输入与门模型input a,b;output c;and(c,a,b);endmodulemodule or_gate(a,b,c);//双输入或门模型input a,b;output c;or (c,a,b);endmodulemodule inverter(a,c);//双输入非门模型input a;output c;reg c;always @(a) beginc<=~a;endendmodule由下图3和下图4可以看出结构化建模的不同之处原语 原语行为描述 图3 由Verilog HDL 行为建模综合出的电路模型图4 由Verilog HDL 结构化建模综合出的电路模型三个种VERILOG 建模方式共同的测试平台。
`timescale 1ns/1nsmodule tb;reg a,b,sel;wire c;mux_behaviour m1(.a(a),.b(b),.sel(sel),.c(c));initialbeginsel=0; a=0; b=0;foreverbegin#0 sel=0; a=0; b=0;#10 sel=0; a=1; b=0;#10 sel=0; a=0; b=1;#10 sel=0; a=1; b=1;#10 sel=1; a=0; b=0;#10 sel=1; a=1; b=0;#10 sel=1; a=0; b=1;#10 sel=1; a=1; b=1;#10;endendendmodule三种VHDL建模方式共同的测试平台。
library ieee;use ieee.std_logic_1164.all;entity mux_tb isend mux_tb;architecture behaviour of mux_tb iscomponent mux_behaviour isport(a : in std_logic;b : in std_logic;sel : in std_logic;c : out std_logic);end component;signal a : std_logic:= '0';signal b : std_logic:= '0';signal sel : std_logic:= '0';signal c : std_logic;beginu1: mux_behaviour port map( a => a,b => b,sel => sel,c => c );test_process: processbeginwait for 0 ns ; sel<='0' ; a<='0' ; b<='0';wait for 10 ns ; sel<='0' ; a<='0' ; b<='1';wait for 10 ns ; sel<='0' ; a<='1' ; b<='0';wait for 10 ns ; sel<='0' ; a<='1' ; b<='1';wait for 10 ns ; sel<='1' ; a<='0' ; b<='0';wait for 10 ns ; sel<='1' ; a<='0' ; b<='1';wait for 10 ns ; sel<='1' ; a<='1' ; b<='0';wait for 10 ns ; sel<='1' ; a<='1' ; b<='1';wait for 10 ns ;end process;end behaviour;图5 三种建模方式的关系在一个工程中,这三种建模方式可以灵活使用。