-2
我想創建一個實現「主要」功能的結構VHDL文件。 「頂級」文件是設計的,運行代碼的程序將會是prog。假設fulladd_pack包含fulladd組件,我如何「鏈接」這兩個VHDL文件?結構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;
-- 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;
您的代碼不是[最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve),缺少包聲明,將輸入信號分配給輸出的語義錯誤(其中是Over使用的信號?)。設計看起來不像使用fulladd_pack,除非在prog中有一個組件聲明(否則缺失)。在兩個full_add實例化中,S,Cout和Over上存在驅動器衝突,並行連接。 c沒有被使用,因此沒有使用temp。鏈接是詳細闡述,在所有的分析(編譯)之後。什麼VHDL工具? – user1155120
我認爲「鏈接」是指在'design'的體系結構中實例化實體'prog'。你是對的。但是,「C」和「temp」的信號是什麼?爲什麼不只是將'design'的輸入/輸出信號傳遞給實例'main'?爲了得到'prog'的幫助,你必須從包中發佈'fulladd'的組件聲明,或者只是將一些(隨機)值分配給輸出,這樣'prog'就可以被編譯。 –
生病編輯我的問題並解釋我想要做什麼 –