📄 am2910.vhd
字号:
library LIB;
use LIB.synopsys_attributes.all;
use LIB.SYNOPSYS.all;
use LIB.AMD_PACK.all;
entity AM2910 is
port(D : in ADDRESS;
INSTRUCTION : in INSTRUCTION_OPS;
CONDITION_CODE : in BIT;
CONDITION_CODE_ENABLE : in BIT;
CARRY_IN : in BIT;
RELOAD : in BIT;
ENABLE_Y : in BIT;
CLOCK : in BIT;
Y_OUTPUT : buffer ADDRESS;
OVERFLOW : out BIT;
PIPELINE_ENABLE : out BIT;
MAPPING_ROM_ENABLE : out BIT;
INTERRUPT_DRIVER_ENABLE : out BIT);
end AM2910;
architecture HDL of AM2910 is
component CONTROL
port(INSTRUCTION : in INSTRUCTION_OPS;
CONDITION_CODE : in BIT;
CONDITION_CODE_ENABLE : in BIT;
FORCE_LOAD : in BIT;
REGCNT_ZERO : in BIT;
UPC_CONTROL : out UPC_OPS;
STACK_CONTROL : out STACK_OPS;
REGCNT_CONTROL : out REGCNT_OPS;
Y_CONTROL : out Y_MUX_OPS;
PIPELINE_ENABLE : out BIT;
MAPPING_ROM_ENABLE : out BIT;
INTERRUPT_VECTOR_ENABLE: out BIT);
end component;
component REGCNT
port(OPERATION : in REGCNT_OPS;
DATA : in ADDRESS;
CLOCK : in BIT;
OUTPUT : buffer ADDRESS;
ZERO : out BIT);
end component;
component STACK
port(OPERATION : in STACK_OPS;
VALUE : in ADDRESS;
CLOCK : in BIT;
OUTPUT_VALUE : out ADDRESS;
OVERFLOW : out BIT);
end component;
component UPC
port(OPERATION : in UPC_OPS;
DATA : in ADDRESS;
CARRY_IN : in BIT;
CLOCK : in BIT;
OUTPUT : buffer ADDRESS;
OUTPUT_BAR : out ADDRESS);
end component;
component Y
port(OPERATION : in Y_MUX_OPS;
DATA_IN : in ADDRESS;
REGCNT_IN : in ADDRESS;
STACK_IN : in ADDRESS;
UPC_IN : in ADDRESS;
MUXOUT : out ADDRESS);
end component;
-- Top-level nets that connect major submodules
signal REGCNT_OP: REGCNT_OPS; -- Register/counter control signal
signal STACK_OP: STACK_OPS; -- Stack control signal
signal UPC_OP: UPC_OPS; -- UPC control signal
signal Y_OP: Y_MUX_OPS; -- Mux control signal
signal REGCNT_OUT: ADDRESS; -- Register/count output
signal REGCNT_ZERO: BIT; -- Register/counter zero flag
signal STACK_TOP: ADDRESS; -- Top of the stack
signal UPC_OUT: ADDRESS; -- UPC output
signal UPC_OUT_BAR: ADDRESS; -- UPC output inverted
signal TMP_Y_OUTPUT: ADDRESS; -- Local output signal
-- The following attribute is supported after v3.4a
-- attribute DONT_TOUCH of U1 : label is TRUE;
-- attribute DONT_TOUCH of U2 : label is TRUE;
-- attribute DONT_TOUCH of U3 : label is TRUE;
-- attribute DONT_TOUCH of U4 : label is TRUE;
-- attribute DONT_TOUCH of U5 : label is TRUE;
begin
U1: STACK port map(STACK_OP, UPC_OUT_BAR, CLOCK, STACK_TOP, OVERFLOW);
U2: UPC port map(UPC_OP, Y_OUTPUT, CARRY_IN, CLOCK, UPC_OUT, UPC_OUT_BAR);
U3: REGCNT port map(REGCNT_OP, D, CLOCK, REGCNT_OUT, REGCNT_ZERO);
U4: Y port map(Y_OP, D, REGCNT_OUT, STACK_TOP, UPC_OUT, TMP_Y_OUTPUT);
Y_OUTPUT <= TMP_Y_OUTPUT;
U5: CONTROL port map(INSTRUCTION, CONDITION_CODE,
CONDITION_CODE_ENABLE, RELOAD, REGCNT_ZERO,
UPC_OP, STACK_OP, REGCNT_OP, Y_OP,
PIPELINE_ENABLE, MAPPING_ROM_ENABLE,
INTERRUPT_DRIVER_ENABLE);
end HDL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -