VHDL将位输入分配给位向量

时间:2018-11-08 18:23:12

标签: vhdl

在我的作业中,我必须放入真值表并从中获取示意图。我的代码如下:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity C0 is
    Port (  a1 : in STD_LOGIC;
            a0 : in STD_LOGIC;
            b1 : in STD_LOGIC;
            b0 : in STD_LOGIC;
            input : in STD_LOGIC_VECTOR(0 to 1);
            OutC0 : out STD_LOGIC);
end C0;

architecture Behavioral of C0 is
begin

process (input)
begin
    case input is

       when "0000" => OutC0 <= '0';
       when "0001" => OutC0 <= '1';
       when "0010" => OutC0 <= '0';
       when "0011" => OutC0 <= '1';
       when "0100" => OutC0 <= '1';
       when "0101" => OutC0 <= '0';
       when "0110" => OutC0 <= '1';
       when "0111" => OutC0 <= '0';
       when "1000" => OutC0 <= '0';
       when "1001" => OutC0 <= '1';
       when "1010" => OutC0 <= '0';
       when "1011" => OutC0 <= '1';
       when "1100" => OutC0 <= '1';
       when "1101" => OutC0 <= '0';
       when "1110" => OutC0 <= '1';
       when "1111" => OutC0 <= '0';

    end case ; 
end process;

end Behavioral;

问题是当我获得原理图时,只有一个输入。 a1a0b1b0这四个输入应该可见。我必须以某种方式将a1a0b1b0放入向量输入中。如果您建议另一种方法,那也很好,但是请不要太复杂。预先感谢。

2 个答案:

答案 0 :(得分:1)

只有一个输入,因为仅使用from collections import Counter sequences = [] with open('DNAinput.txt', 'r') as file: for line in file: if line[0] == '>': continue else: sequences.append(line.strip()) m = max([len(v) for v in sequences]) matrix = [list(v) for v in sequences] for seq in matrix: seq.extend(list('N' * (m - len(seq)))) transposed_matrix = [[matrix[j][i] for j in range(len(matrix))] for i in range(m)] for column in transposed_matrix: print(Counter(column).most_common(5)) inputa1a0b1未被任何进程使用(至少不在摘要中)。

综合VHDL描述时,它将修剪所有未使用的信号。 这样做是为了节省面积和功率,例如。

对真实硬件的描述中的synthesis是一个复杂的主题,在此我将不再赘述。

答案 1 :(得分:1)

如上所述,您的逻辑不依赖于a0a1b0b1信号。此外,input向量的长度不应为2,而应为4。

  1. 您应该从实体声明中的端口列表中删除input向量。使其为四位信号:signal input : std_logic_vector(3 downto 0);。您可以检查this link以获得更多指导。
  2. 您可能希望向量input的值取决于四个std_logic信号的值。通过串联四个信号input <= a0 & a1 & b0 & b1;,为向量分配一个值。因为您对向量中的位应该是哪个顺序的疑问一直模棱两可,所以您可能必须对此进行修改!
  3. 还要在您的others语句中包含case选择。
  4. 输出似乎仅取决于case语句中input向量的第0个元素和第2个元素。因此,检查图表时,如果不是所有输入都已连接,请不要担心:这是因为它们只是无效!

Ps。可能有一些参考文献可供进一步阅读,例如:https://www.ics.uci.edu/~jmoorkan/vhdlref/http://esd.cs.ucr.edu/labs/tutorial/用于自学。

快乐的编码。