【问题标题】:Encoder VHDL Code编码器 VHDL 代码
【发布时间】:2016-08-18 15:21:29
【问题描述】:
-- Code your design here

library IEEE;

use IEEE.std_logic_1164.all;

entity encoder8_3 is

     port(

         din : in STD_LOGIC_VECTOR(7 downto 0);

         dout : out INTEGER RANGE 0 TO 15

         );

end encoder8_3;

architecture encoder8_3_arc of encoder8_3 is

begin

    dout <= "0" when (din="10000000") else
            "1" when (din="01000000") else
            "2" when (din="00100000") else
            "3" when (din="00010000") else
            "4" when (din="00001000") else
            "5" when (din="00000100") else
            "6" when (din="00000010") else
            "7";

end encoder8_3_arc;

这段代码会运行吗?我想返回整数来代替它的二进制等价物。

【问题讨论】:

  • 问题是什么?

标签: vhdl


【解决方案1】:

为什么这段代码不能编译

因为VHDL中的整数文字没有引号:

library IEEE;

use IEEE.std_logic_1164.all;

entity encoder8_3 is

     port(

         din : in STD_LOGIC_VECTOR(7 downto 0);

         dout : out INTEGER RANGE 0 TO 15

         );

end encoder8_3;

architecture encoder8_3_arc of encoder8_3 is

begin

    dout <= 0 when (din="10000000") else
            1 when (din="01000000") else
            2 when (din="00100000") else
            3 when (din="00010000") else
            4 when (din="00001000") else
            5 when (din="00000100") else
            6 when (din="00000010") else
            7;

end encoder8_3_arc;

http://www.edaplayground.com/x/5f2M

【讨论】:

    【解决方案2】:

    您必须删除整数值周围的引号:

    dout <= 0 when (din="10000000") else
            1 when (din="01000000") else
            2 when (din="00100000") else
            3 when (din="00010000") else
            4 when (din="00001000") else
            5 when (din="00000100") else
            6 when (din="00000010") else
            7;
    

    在这里运行一个简单的测试平台:http://www.edaplayground.com/x/5bwv 我得到以下输出:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多