VHDL和VERILOG的比较-很好.ppt
1整体结构 VHDL Verilog HDLentity 实体名 is module 模块名(端口表)port(端口说明)输入/输出端口说明 end Architecture is 说明部分;变量类型说明;begin 并行执行语句;并行执行语句;end 结构体名;endmodule,VHDL 与 Verilog HDL 的对比,1整体结构 点评:两者整体结构基本相似;VHDL分为两段描述,需要进行大量说明,程序通常比较长;Verilog HDL采用一段描述,通常不进行说明,或只进行非常简短的说明,程序比较简短。,VHDL 与 Verilog HDL 的对比,2外部端口描述entity mux4 is port(s:in std_logic_vector(1 downto 0);a,b,c,d:in std_logic_vector(7 downto 0);y:out std_logic_vector(7 downto 0);end mux4;module kmux4_1(s,a,b,c,d,y);input1:0 s;input 7:0 a,b,c,d;output7:0 y;,VHDL 与 Verilog HDL 的对比,2外部端口描述 点评VHDL采用实体专门描述,需要为每个信号指定传输模式和数据类型,可以输入输出抽象的数据;Verilog HDL采用简单语句描述,只指出端口的基本模式和数据宽度,只能输入输出较具体的数据。,VHDL 与 Verilog HDL 的对比,3数据对象和数据类型VHDL的数据对象有常量、信号和变量,分别表达不同的硬件对应概念;每种对象都可以设置为不同的数据类型,可以明确表达各种具体或抽象的数据;数据使用时必须进行类型说明,运算时必须考虑类型的一致性。,VHDL 与 Verilog HDL 的对比,3数据对象和数据类型Verilog HDL的数据对象有常量和变量;其中变量分为连线型(wire)和寄存器型(reg),wire型类似于信号,而reg型类似于变量,只能在子程序块中赋值;数据变量默认为wire型。,VHDL 与 Verilog HDL 的对比,4主要运算:逻辑运算 VHDL中 有常用的6种,可以对1位的逻辑量或逻辑数组进行运算;Verilog HDL中有3类共14种,分为一般逻辑运算,位逻辑运算,缩减逻辑运算;其底层逻辑功能要强大一些!,VHDL 与 Verilog HDL 的对比,4主要运算:算术运算 VHDL中有10种 但很多都不能进行综合,只能用于行为描述;Verilog HDL中只有能够综合的5种。VHDL的行为设计能力更强一些!,VHDL 与 Verilog HDL 的对比,4主要运算:关系运算VHDL中有6种;Verilog HDL中有2类共8种,对比增加了全等和不全等(用于对不定态比较)。点评:VHDL的运算划分比较抽象,适应面较广;Verilog HDL的运算划分比较具体,对逻辑代数反映更细致一些。,VHDL 与 Verilog HDL 的对比,5并行语句两种语言的语句都分为并行语句和顺序语句;并行语句在主程序中使用;顺序语句只能在子结构中使用。并行语句可以分为三类:赋值语句、元件语句、进程语句,VHDL 与 Verilog HDL 的对比,5并行语句:赋值语句VHDL 信号赋值语句(直接赋值、条件赋值、选择赋值)Verilog HDL assign语句(连续赋值)(对wire类型变量)例:assign y=a&c assign f=x+y,VHDL 与 Verilog HDL 的对比,6并行语句:元件语句VHDL 元件语句(需在结构体中进行说明)Verilog HDL 门原语、元件例化语句(无需说明,只需调用相应的工作库)例:module reg8(qout,in,clk,clear)reg8 myreg(accout,sum,clk,clear),VHDL 与 Verilog HDL 的对比,6并行语句:进程语句 VHDL Verilog HDLprocess(敏感表)always(敏感表)begin begin 顺序语句;顺序语句;end process;end,VHDL 与 Verilog HDL 的对比,7.顺序语句:赋值语句VHDL Verilog HDL 信号赋值 非阻塞赋值变量赋值 阻塞赋值 例:b=a;c=b 过程结束时赋值,c落后b一个时钟周期;b=a;c=b;立即赋值,b与c相同。,VHDL 与 Verilog HDL 的对比,7.顺序语句:条件语句 if case 两者基本相同;例:if(reset)qout=0;else if(load)qout=data;else qout=qout+1;,VHDL 与 Verilog HDL 的对比,7.顺序语句:条件语句 例:case(data)2b00:decod=4b0001;2b01:decod=4b0010;2b10:decod=4b0100;2b11:decod=4b1000;default:decod=4b0000;endcase,VHDL 与 Verilog HDL 的对比,7.顺序语句:循环语句VHDL中有3种形式的循环语句:for loop;有限循环 while loop;条件循环loop(next,exit);无条件循环,VHDL 与 Verilog HDL 的对比,7.顺序语句:循环语句Verilog HDL 中有4种形式:for(初值,终止值,增量)有限循环;repeat(循环次数表达式)有限循环;while(循环条件表达式)条件循环;forever 无条件循环,产生周期信号;,VHDL 与 Verilog HDL 的对比,7.顺序语句:时钟边沿检测VHDL:clkevent and clk=1(0)Verilog HDL posedeg clk(negedge);,VHDL 与 Verilog HDL 的对比,7.子结构 VHDL Verilog HDL function function procedure task,VHDL 与 Verilog HDL 的对比,8.资源 VHDL Verilog HDL library include package,VHDL 与 Verilog HDL 的对比,9.简单模块的对比:8位4选1MUX,VHDL 与 Verilog HDL 的对比,9.简单模块的对比:8位4选1MUX,VHDL 与 Verilog HDL 的对比,9.简单模块的对比:8位加法器,VHDL 与 Verilog HDL 的对比,9.简单模块的对比:8位二进制加法计数器,VHDL 与 Verilog HDL 的对比,9.简单模块的对比:8位二进制加法计数器,VHDL 与 Verilog HDL 的对比,9.简单模块的对比:序列信号发生器,VHDL 与 Verilog HDL 的对比,采用结构设计:预先设计模块:8选1MUX:MUX8 控制输入a2.0 数据输入d7.0 数据输出y模8二进制计数器:COUNTER3 时钟输入 clk 状态输出q2.0设计要求:按照时钟节拍,由y端口循环顺序输出“11110101”序列信号,9.简单模块的对比:序列信号发生器,VHDL 与 Verilog HDL 的对比,9.简单模块的对比:序列信号发生器,VHDL 与 Verilog HDL 的对比,9.简单模块的对比:序列信号发生器,VHDL 与 Verilog HDL 的对比,小结:对于简单模块的设计,采用两种语言进行编程的思路基本相同,VHDL语言由于说明语句较多,程序会更长一些。,