artur 0 14 апреля, 2017 Опубликовано 14 апреля, 2017 (изменено) · Жалоба Доброе время суток, помогите решить проблему имеется н-число счетчиков которые соеденены последовательно, каждый счетчик выдает свое актуальное число на отдельный вектор, чтобы не писать кучу текста хочу решить эту проблему при помоши "generate" но загвоздка состоит в том как описать чтобы каждый счетчик выдавал число на отельный вектор? спасибо signal cnt_0, cnt_1, cnt_2, cnt_3, cnt_4, cnt_5, cnt_6 : std_logic_vector(3 downto 0); signal cin : std_logic_vector(n-1 downto 0); component counter is port( reset, dir, clk : in std_logic; carry : out std_logic; resut : out std_logic_vector(3 downto 0)); end component; begin gen: for i in 0 to n-1 generate gen1: if (i = 0) generate begin i1: counter port map (reset => rst, dir => dir, clk => a, resut => cnt(i), carry => cin(0) ); end generate gen1; gen2: if (i /= 0) generate begin i2: counter port map (reset => rst, dir => dir, clk => cin(i-1), resut => cnt(i), carry => cin(i) ); end generate gen2; end generate gen; Изменено 14 апреля, 2017 пользователем artur Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dimidrol 0 14 апреля, 2017 Опубликовано 14 апреля, 2017 · Жалоба type tCNT_ARRAY is array(n-1 downto 0) of std_logic_vector(3 downto 0); signal cnt_array : tCNT_ARRAY := (others=>(others=>'0')); .... resut => cnt_array(i), .... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Александр77 1 15 апреля, 2017 Опубликовано 15 апреля, 2017 · Жалоба загвоздка состоит в том как описать чтобы каждый счетчик выдавал число на отельный вектор? Делаю ровным счетом на оборот. Задаю на все выходы повторяющихся узлов один вектор длинной в n*m бит, где n- число узлов из generate, а m - длина вектора у одного узла. А дальше простая арифметика result=> vector((i+1)*m-1 downto i*m) в случае когда i от 0 до n-1 или result=> мусещк(i*m-1 downto (i-1)*m) когда счет от 1 до n. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
artur 0 15 апреля, 2017 Опубликовано 15 апреля, 2017 · Жалоба type tCNT_ARRAY is array(n-1 downto 0) of std_logic_vector(3 downto 0); signal cnt_array : tCNT_ARRAY := (others=>(others=>'0')); .... resut => cnt_array(i), .... спасибо, работает! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться