2017-04-17 13 views
0

何をすべきかを知らないが、それはVHDLエラー10344は、私がセット&負荷Dフリップフロップコード(同期)を作成しようとしています

library ieee; 
use ieee.std_logic_1164.all; 
use ieee.std_logic_unsigned.all; 
entity syn is 
port (
clk : in std_logic; 
rst_n : in std_logic; 
d : in std_logic; 
ld : in std_logic; 
q : out std_logic_vector(7 downto 0); 
co : out std_logic); 
end syn; 
architecture rtl of syn is 
signal count : std_logic_vector(8 downto 0); 
begin 
co <= count(8); 
q <= count(7 downto 0); 
process (clk) 
begin 
    if (clk'event and clk = '1') then 
     if (rst_n = '0') then 
      count <= (others => '0'); -- sync reset 
     elsif (ld = '1') then 
      count <= '0' & d; -- sync load 
     else 
      count <= count + 1; -- sync increment 
     end if; 
    end if; 
end process; 
end rtl; 
+0

エラーメッセージは、何が間違っているかを示します。この場合、非常に正確です。 –

+1

集合体。 count(0)はdに割り当てられ、他のもの(8downto1)には '0'が割り当てられる。さもなければあなたの意図は明確ではありません。 2つのインデックスポジションだけをロードしようとしていますか? – user1155120

答えて

2

入力DがSTD_LOGICで事前に私にcount <= '0' & d; it has 2 elements but must have 9 elements error.Thanksを与え続けますしたがって'0' & dは2ビットのベクトルです。 Countは長さ9のstd_logic_vectorなので、このような割り当てはできません。 私はあなたが達成しようとしていることを完全には分かっていません。あなたは、ベクターの一部に「0」& Dを割り当てたい場合は、例えば書くことができます

count(1 downto 0) <= '0' & d 

dはカウンタの同じ大きさであると考えられる場合には、実体宣言で、それのサイズを変更します。

+0

この回答が有用な場合は、それを受け入れたものとしてマークしてください。 – Staszek

関連する問題