VERILOG和VHDL语法对比字典

前言

写代码的时候,经常遇到VHDL的代码和Verilog代码混用的情况。因为,平时接触VHDL,或者Verilog少就会导致工作效率变低。这个帖子是平时工作的一些心得。

废话不多说,上活

看RTL代码,往往第一件事是看结构

Verilog的结构相比大家都很熟。

下面把VHDL 的语法结构与Verilog的语法结构对比,做成一个字典,方便大家读代码  

 

VerilogVHDL
module()

entity xxx is

port(A: in std_logic);

end entity

时序逻辑,或者组合逻辑

always@()begin

A<=B

end

时序逻辑,或者组合逻辑

process()

begin 

A<=B

end process;

组合逻辑

assign A=B;

组合逻辑

A<=B;

例化

原件名 XXX

#(.A      (A)

    )

( .B     (B),

  )

Vhdl 需要例化声明+例化调用

--例化声明

component XXX is

port()

end component;

--例化调用

XXX: 原件名

generic map(A=>A

                     )

port map(B => B,

               );

VHDL 的其他不同点

1,VHDL 是不区分reg,wire, 在VHDL 中一律命名为 signal

      有人问,那怎么区分阻塞不阻塞赋值。

      在VHDL 中全部使用 A<= B; 赋值

2, VHDL代码分为 声明部分,和逻辑部分

    VHDL有点像C, 我们在编写main()之前要定义一些全局变量,常数。

    VHDL中在主体逻辑architecture之前也要定义信号。

entity XXX is

     port();

end entity;

architecture XXX_arch of XXX is 

signal A : std_logic;

signal B :   std_logic_vector;

声明原件

begin                             --声明部分和逻辑部分的分界线 上面是声明,下面是逻辑

        A<=B

        原件例化

        process()

        begin

        end process;

end architecture;

3 VHDL --是注释标记

总结 要想把一个Verilog 改成VHDL 

step1: module --》entity XX is

                                port()

                                End entity;

step2:添加architecture  XXX_arch of  XXX is

            把wire,reg改成signal , 把调用的原件声明一边

            在wire 和reg定义的后面加上一个begin

 step3:always 改成   process

             删掉 assign, 全部改成<=

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值