1.整体结构
VHDL Verilog HDL
entity 实体名 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);
input[1:0] s;
input [7:0] a,b,c,d;
output[7: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 HDL
process (敏感表 ) 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)
2'b00:decod=4'b0001;
2'b01:decod=4'b0010;
2'b10:decod=4'b0100;
2'b11:decod=4'b1000;
default:decod=4'b0000;
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,clk'event 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 控制输入 a[2..0]
数据输入 d[7..0] 数据输出 y
模 8二进制计数器,COUNTER3
时钟输入 clk 状态输出 q[2..0]
设计要求:
按照时钟节拍,由 y端口循环顺序输出
,11110101”序列信号
9,简单模块的对比:序列信号发生器
VHDL 与 Verilog HDL 的对比
9,简单模块的对比:序列信号发生器
VHDL 与 Verilog HDL 的对比
9,简单模块的对比:序列信号发生器
VHDL 与 Verilog HDL 的对比小结:对于简单模块的设计,采用两种语言进行编程的思路基本相同,VHDL语言由于说明语句较多,程序会更长一些。