1 vhdl
这里是初学者的问题。
我要执行以下操作,
我有一个std_logic_vector(1 downto 0)输入。我应该将其扩展为四个位;
像11 => 0011
或10 => 0010
我尝试过,但是失败了。
(Data0 is declared as input at entity port list)
Signal Data0_4bit: std_logic_vector(3 downto 0) :=B"0000";
Data0_4bit(1 downto 0)<=Data0(1 downto 0);
Run Code Online (Sandbox Code Playgroud)
提前致谢。
VHDL不允许这样做,因为您正试图对Data0_4bit(声明中一次,当您为其分配Data0时)的底部两位进行双重分配。
尝试使用串联运算符在单个操作中分配整个向量:
Signal Data0_4bit: std_logic_vector(3 downto 0) := B"00" & Data0(1 downto 0);
Run Code Online (Sandbox Code Playgroud)
或者,您可以将分配分为两行:
Signal Data0_4bit: std_logic_vector(3 downto 0); -- note that Data0_4bit is only declared here, not assigned a value
Data0_4bit(3 downto 2) <= B"00"; -- assign top two bits to 0
Data0_4bit(1 downto 0) <= Data0(1 downto 0); -- assign bottom two bits to Data0
Run Code Online (Sandbox Code Playgroud)
免责声明:我编写VHDL已有10年了,我没有办法测试该代码。
| 归档时间: |
|
| 查看次数: |
5560 次 |
| 最近记录: |