VHDL与Verilog的混合设计[通俗易懂]

VHDL与Verilog的混合设计[通俗易懂]VHDL调用Verilog模块的时候,要在实例化模块前,加上“verilogmodelGM:”VHDL调用verlogverilogmodule:modulem(a,b,c);inputa,b;outputc;…endmodule调用如下:compoentmport(a:instd_logic;…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

VHDL调用Verilog模块的时候,要在实例化模块前,加上“verilogmodelGM: ”
VHDL调用verlog

verilog module:
module m(a,b,c);
input a,b;
output c;

endmodule
调用如下:
compoent m
port(                 a: in std_logic;
                        b: in  std_logic;
                        c: out std_logic
                      );
end compoent
begin
verilogmodelGE: m
port map
(…
)

end
在VHDL里调用Verilog的话:例化+映射
在Verilog里调用VHDL的话:只要映射
看的别人的。。。所以是错误的

正确方法:

这里用VHDL调用VERILOG写好的模块.
先按VHDL的语法声明实体(也就是你用Verilog写的模块),然后按VHDL的语法例化实体就行了 .
这样就不用转换了,或者可以少用转换了.
例子.
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use work.dt16_pkg.all;
entity clk_alm is
port (
      reset       : in    std_logic;
      fck32m      : in    std_logic; –来自背板的32M帧头
clk32m      : in    std_logic; –来自背板的32M时钟
refclk2m    : in    std_logic; –2M参考时钟
      clklos      : out   std_logic  –时钟告警输出
      );
end clk_alm;
architecture arch_clk_alm of clk_alm is
component clk_dog
   port(
       reset       : in    std_logic;
       clock   : in std_logic;–work clock
   refclk  : in std_logic;–reference clock
   alm     : out std_logic
       );
end component;

component ALM  –声明
   port( XMCLK    : in std_logic;
       RST      : in std_logic;
       M_CLK    : in std_logic;
       LOST_ALM : out std_logic
       );
end component;
   

signal alm_clk: std_logic;
signal alm_fck: std_logic;
signal refclk2m_div: std_logic;
signal count: std_logic_vector(2 downto 0);
signal delay_los: std_logic;

begin

clk_dog0: clk_dog
port map (
           reset   => reset       ,
           clock=>clk32m    ,
           refclk  =>refclk2m   ,
           alm =>alm_clk
           );

fck_dog0: ALM   –例化
PORT MAP(
          XMCLK     =>  fck32m   ,
          RST       =>  reset    ,
          M_CLK     =>  refclk2m_div ,
          LOST_ALM  =>  alm_fck
          );
         
process(reset,refclk2m)
begin
   if reset=’1′ then
  count<=(others=>’0′);
   elsif refclk2m’event and refclk2m=’1′ then
     count<=count+1;
   end if;
end process;
refclk2m_div<=count(2);

clklos<=not(alm_clk and alm_fck);  

end arch_clk_alm;

—————–以下是verilog写的module—————–

module ALM (XMCLK, RST, M_CLK, LOST_ALM);

input XMCLK ;
input RST ;
input M_CLK ;
output LOST_ALM ;

reg LOST_ALM;
reg [2:0]ALM_STATE;

reg [2:0]COUNTA;
reg [2:0]COUNTB;
reg [2:0]COUNTC;

always @(negedge RST or posedge XMCLK)
begin
if (!RST)
COUNTA <= 0;
else if (COUNTA == 7)
COUNTA <= 0;
else  COUNTA <= COUNTA + 1;
end

always @(posedge M_CLK)
begin
if (!RST)
begin
COUNTB <= 0;
COUNTC <= 0;
end
else
begin
COUNTC <= COUNTB;
COUNTB <= COUNTA;
end
end

always @(negedge M_CLK)
begin
if (!RST)
ALM_STATE <= 0;
else if (ALM_STATE == 7)
ALM_STATE <= 0;
else if (COUNTC == COUNTB)
ALM_STATE <= ALM_STATE + 1;
else  ALM_STATE <= 0;
end

always @(posedge M_CLK)
begin
if (!RST)
LOST_ALM <= 1;
else if (ALM_STATE == 7)
LOST_ALM <= 0;
else  LOST_ALM <= 1;
end
endmodule

其实不仅verilog 可以与 vhdl 混合使用,而且与原理图也能混合使用,就是传说中的分层设计,底层模块随便你用什么,生成符号就成,然后到顶层调用,顶层可用原理图也可用语言,目前altera的quartus、xilinx的ise、lattice的isplever均支持这种模式。

转载于:https://www.cnblogs.com/iwxg/p/4486824.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192020.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java实现国密算法SM2,SM3,SM4,并且实现ECB和CBC模式

    Java实现国密算法SM2,SM3,SM4,并且实现ECB和CBC模式代码中实现了电码本ECB模式和密文分组连接CBC模式,SM3.java和SM4.java为算法实现类,utils的都是根据实现类写的工具,可以根据需要调用杂凑算法SM3的杂凑功能获得杂凑值。SM4.java中sm4_crypt_ecb(SM4_Contextctx,byte[]input)ECB模式加解密方法,根据密钥判断加解密功能sm4_crypt_cbc(…

    2022年9月23日
    0
  • mp3文件结构_mp3格式特点

    mp3文件结构_mp3格式特点MP3音频文件结构解析,包括文件首部的ID3V2、数据帧、以及位于文件末尾128字节的ID3V1等信息。

    2022年9月6日
    3
  • linux删除宝塔面板_宝塔修改端口

    linux删除宝塔面板_宝塔修改端口https://www.2kss.com/45898.html

    2022年10月19日
    0
  • photoshop实例实战(入门级)教程

    photoshop实例实战(入门级)教程PS对街拍女孩照片增加质感(2019-03-1917:57)PS制作水火相溶特效文字图片(2019-03-1917:49)PS制作简洁漂亮的立体抽丝文字(2019-03-1917:16)P

    2022年7月2日
    20
  • win10下禁止自动更新,Window Update禁用无效后续方法

    win10下禁止自动更新,Window Update禁用无效后续方法win10禁用自动更新,现在需要禁用两个服务,分别是WindowsUpdate和WindowsUpdateMedicService。为啥呢。WindowsUpdate是启用检测、下载和安装Windows和其他程序的更新。单个禁用它没有效果因为win10鸡贼地加了WindowsUpdateMedicService服务,是启用对Windows更新组件的修复和保护。禁…

    2022年6月3日
    44
  • unity3d的入门教程_unity菜鸟教程

    unity3d的入门教程_unity菜鸟教程Unity3D新手入门初级教程U3D是由UnityTechnologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。可发布游戏至Windows、Mac、Wii、iPhone、Windowsphone8和Android平台。也可以利用Unitywebplayer插件发布网页游戏,支持Mac和Windows的网页浏览。它的网页播放器也被Macwidgets所支持!U3D现已经占领了国内85%的手游

    2022年9月19日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号