Syntax 用于寄存器的VHDL代码,用于二进制乘法电路
我为二进制乘法电路中的寄存器(构成移位寄存器电路)编写了一段VHDL代码。当我在Quartus II中分析它时,显示了几个语法错误 这是我的代码:Syntax 用于寄存器的VHDL代码,用于二进制乘法电路,syntax,vhdl,cpu-registers,binary-logic,Syntax,Vhdl,Cpu Registers,Binary Logic,我为二进制乘法电路中的寄存器(构成移位寄存器电路)编写了一段VHDL代码。当我在Quartus II中分析它时,显示了几个语法错误 这是我的代码: ENTITY memory IS PORT (can_load, can_shift, can_ad, sb_input, ab_input, UserInput : IN BIT; Out_Bit, Z : OUT BIT); END memory; ARCHITECTURE logic OF memory IS SIG
ENTITY memory IS
PORT (can_load, can_shift, can_ad, sb_input, ab_input, UserInput : IN BIT;
Out_Bit, Z : OUT BIT);
END memory;
ARCHITECTURE logic OF memory IS
SIGNAL State: BIT := '0';
BEGIN
IF (can_load = '1') THEN
State <= UserInput;
ELSE
IF (can_ad = '1') THEN
Z <= State; --Z is the output that goes to the 4 bit adder
State <= ab_input;
END IF;
IF (can_shift = '1') THEN
Out_Bit <= State;
State <= sb_input;
END IF;
END IF;
END logic;
有这样的东西:
IF (can_load = '1') THEN
IF can_load = '1' THEN
但我最终还是犯了大部分相同的语法错误
我很感激能为解决这个问题提供任何帮助。多谢各位 我使用了不同的工具来演示错误: ghdl—一种内存。vhdl
memory.vhdl:9:9:generate语句必须有一个标签
memory.vhdl:9:29应为“generate”而不是“then”
ghdl:编译错误 注意,分析器正在抱怨生成语句。这是因为if语句是仅在进程或其他并发语句或子程序中找到的顺序语句 带有条件方案的generate语句(因此,
if
)是并发进程语句,需要一个标签
将if语句放入进程中:
entity memory is
port (can_load, can_shift, can_ad, sb_input, ab_input, userinput : in bit;
out_bit, z : out bit);
end memory;
architecture logic of memory is
signal state: bit := '0';
begin
SOME_PROCESS:
process (userinput, ab_input, state, sb_input)
begin
if can_load = '1' then
state <= userinput;
else
if can_ad = '1' then
z <= state; --z is the output that goes to the 4 bit adder
state <= ab_input;
end if;
if can_shift = '1' then
out_bit <= state;
state <= sb_input;
end if;
end if;
end process;
end logic;
实体内存不可用
端口(can_加载、can_移位、can_ad、sb_输入、ab_输入、用户输入:位;
out_位,z:out位);
终端存储器;
内存的体系结构逻辑是
信号状态:位:='0';
开始
一些程序:
过程(用户输入、ab_输入、状态、sb_输入)
开始
如果can_load='1',则
状态如果…那么是一个顺序语句。您正在架构的并行处理区域中使用它。在体系结构内部的过程中使用它。谢谢,我做到了,它成功了。我不知道我不能用如果…那么在一个过程之外。谢谢。你的回答真的很有帮助。我一定会考虑你的所有建议。:)