在我的作业中,我必须放入真值表并从中获取示意图。我的代码如下:
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;
问题是当我获得原理图时,只有一个输入。 a1
,a0
,b1
和b0
这四个输入应该可见。我必须以某种方式将a1
,a0
,b1
和b0
放入向量输入中。如果您建议另一种方法,那也很好,但是请不要太复杂。预先感谢。
答案 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))
。input
,a1
,a0
和b1
未被任何进程使用(至少不在摘要中)。
综合VHDL描述时,它将修剪所有未使用的信号。 这样做是为了节省面积和功率,例如。
对真实硬件的描述中的synthesis是一个复杂的主题,在此我将不再赘述。
答案 1 :(得分:1)
如上所述,您的逻辑不依赖于a0
,a1
,b0
或b1
信号。此外,input
向量的长度不应为2,而应为4。
input
向量。使其为四位信号:signal input : std_logic_vector(3 downto 0);
。您可以检查this link以获得更多指导。input
的值取决于四个std_logic
信号的值。通过串联四个信号input <= a0 & a1 & b0 & b1;
,为向量分配一个值。因为您对向量中的位应该是哪个顺序的疑问一直模棱两可,所以您可能必须对此进行修改!others
语句中包含case
选择。input
向量的第0个元素和第2个元素。因此,检查图表时,如果不是所有输入都已连接,请不要担心:这是因为它们只是无效!Ps。可能有一些参考文献可供进一步阅读,例如:https://www.ics.uci.edu/~jmoorkan/vhdlref/或http://esd.cs.ucr.edu/labs/tutorial/用于自学。
快乐的编码。