结构vhdl:创建一个;“主要功能”;

结构vhdl:创建一个;“主要功能”;,vhdl,Vhdl,我想创建一个实现“main”函数的结构VHDL文件。“顶级”文件是design,运行代码的程序是prog。假设fulladd_pack包含fulladd组件,如何“链接”两个VHDL文件 *我也没有得到主要的论点,以使这项工作 -- design.vhdl library ieee; use ieee.std_logic_1164.all; use work.fulladd_pack.all; ENTITY design IS port(Cin : IN STD_LO

我想创建一个实现“main”函数的结构VHDL文件。“顶级”文件是design,运行代码的程序是prog。假设fulladd_pack包含fulladd组件,如何“链接”两个VHDL文件

*我也没有得到主要的论点,以使这项工作

-- design.vhdl
library ieee;
use ieee.std_logic_1164.all;
use work.fulladd_pack.all;

ENTITY design IS
    port(Cin        :   IN STD_LOGIC;
            X,Y     :   IN  STD_LOGIC_VECTOR(15 DOWNTO 0);
            S       :   OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
            Cout, Over  :   OUT STD_LOGIC);
END design;

ARCHITECTURE struct OF design IS
SIGNAL C,temp   :   STD_LOGIC_VECTOR(1 TO 15);
BEGIN
            main: prog PORT MAP(Cin,X,Y,S,C,Cin);
END struct; 


你没抓住重点。VHDL作为一种“编程语言”,对并发性、数据流和时间推移进行建模。一个模型由大量元素(“进程”)组成,数据(“信号”)在它们之间流动。模拟器中的内置内核处理并发和时间流

在“顶层”,您编写一个测试台,用于实例化模型,并应用刺激(通过驱动作为模型输入的信号)。刺激迫使数据围绕模型。这种情况一直持续到你停止提供刺激为止,在这一点上,其他一切都应该停止


所以,没有主要问题。写一个测试台。”“链接”是模拟器中的一个内部概念;算了吧。只需一起模拟源文件。

您的代码不是a,缺少包声明,将输入信号分配给输出时存在语义错误(在哪里使用了Over signals?)。除非有prog的组件声明(否则缺少),否则设计看起来不像使用fulladd_-pack。S、Cout和Over上存在驱动器冲突,这两个full_add实例只是并行连接。c未在使用时声明,temp未使用。链接是细化,在一切分析(编译)之后。什么VHDL工具?我认为“链接”是指在
设计
的体系结构中实例化实体
prog
。你走对了路。但是,信号
C
temp
的作用是什么?为什么不将
design
的输入/输出信号传递给实例
main
?要获得有关
prog
的帮助,您必须从软件包中发布
fulladd
的组件声明,或者只为输出分配一些(随机)值,以便编译
prog
。我将编辑我的问题并解释我想做什么
 -- prog.vhdl
library ieee;
use ieee.std_logic_1164.all;
use work.fulladd_pack.all;

ENTITY prog IS
    port(Cin        :   IN STD_LOGIC;
            X,Y     :   IN  STD_LOGIC_VECTOR(15 DOWNTO 0);
            S       :   OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
            Cout, Over  :   OUT STD_LOGIC);
END prog;

ARCHITECTURE struct OF prog IS
SIGNAL C,temp   :   STD_LOGIC_VECTOR(1 TO 15);
BEGIN
            instance0: fulladd PORT MAP(Cin,X,Y,S,C,Cin);
            output: fulladd PORT MAP(Cin,X,Y,S,C,Cin);


END struct;