我是VHDL的新手,我的代码问题似乎无法解决。我们应该使用选定的信号分配或表查找来完成此操作。因为我们应该使用不关心不会发生的输入,所以我的两者是两者的组合。
代码基本上应该为2的补码输入或偏移二进制提供相同的输出。因此,例如,十进制数7在偏移二进制中是“1111”,在二进制补码中是“0111”。两种形式都应该根据开关oe的值产生“1111100000”的输出(偏移二进制的'1',2的补码的'0')。
我在这个级别尽可能多地调试了我的代码,我不明白我做错了什么。
Active-HDL目前在48行和55行给出了错误。我收到了两个“预期的简单表达”错误。
我的代码位于下面的pastebin URL,因为它允许更好的可读性和语法突出显示(另外,我不喜欢摆弄Stack Exchange发布代码的奇怪方式)。另外,如果您在维护分配说明的同时有任何关于如何改进代码的提示,请随时提出建议。
答案 0 :(得分:0)
只需使用流程使其更具可读性:
...
-- untested
process( input, d, tmp, ob)
begin
if ob = '1' then
led <= table(to_integer(unsigned(d & tmp)));
else
led <= table(to_integer(unsigned(not d & tmp)));
end if;
end process;
...