【问题标题】:VHDL for loop type error and shift error用于循环类型错误和移位错误的 VHDL
【发布时间】:2013-02-04 08:20:30
【问题描述】:

我正在尝试用 VHDL 编写一个 for 循环,但我相信循环语句中存在一些类型问题。我有一个接收 16 位字 A 作为输入的块,它指示我应该移动另一个输入 B 的次数。输出 C 显示 B 的移位版本。我的代码如下所示:

TEMP_C := B;
FOR I IN 1 TO UNSIGNED(A) LOOP
  TEMP_C := TEMP_C(15) & TEMP_C(15 DOWNTO 1);
END LOOP;
C <= TEMP_C;

编译器抱怨第二行,并说“Range left bound type Integer is not the same as right bound type”。有人可以向我解释为什么这条线是错误的,我该如何解决?

【问题讨论】:

    标签: vhdl


    【解决方案1】:

    在左边你有“1”,是一个“整数”。在右侧,您有“无符号(std_logic_vector?)”,是一个“无符号”。无符号仍然与“整数”不同。无符号仍然是位的集合。 Here 了解有关“未签名”的更多信息。

    无论如何this solution 会帮助你更多...

    【讨论】:

      【解决方案2】:
      FOR I IN 1 TO to_integer(UNSIGNED(A)) LOOP
      

      unsigned 向量与integer 不同。这不是 Verilog!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-09-23
        • 1970-01-01
        • 1970-01-01
        • 2018-09-17
        相关资源
        最近更新 更多