Rock87 0 11 апреля, 2012 Опубликовано 11 апреля, 2012 · Жалоба Потихоньку разбираюсь с ПЛИС. Пишу на VHDL. Допустим имеем сигнал signal sig std_logic_vector (7 downto 0); и в какой то момент нужно записать во все его разряды нули (обнулить). Вижу два варианта: 1. sig<=X"00"; -- в этом случае при изменении разрядности сигнала придется изменять и разрядность данных X"00". -- А что делать есть ли разрядность сигнала не кратна байту? 2. sig<=(other=>0); -- работает, но смущает описание: Ключевое слово others употребляется в нескольких случаях. 1. Имеется возможность использовать слово "others", которое назначает значение всем другим элементам массива, которые не были определены. signal X : bit_vector (3 downto 0); signal A, B, C, D : bit; signal BYTE : bit_vector (7 downto 0); X <= (3=>’1’, 1=>’O’, others => B); 2. В операторе case. process (A, В, С, X) begin case X is when 0 to 4 => Z <= B; when 5 => Z <= C; when 7 | 9 => Z <= A; when others => Z <= 0; end case; end process; Внимание, вопрос! :rolleyes: А как Вы делаете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 12 апреля, 2012 Опубликовано 12 апреля, 2012 · Жалоба 2. sig<=(other=>0); -- работает, но смущает описание: А что ту такого? Да, others в разных контекстах имеет разный смысл. Как будто в других языках такого нет. Я лично использую sig <= (other => 0); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sisuprun 0 12 апреля, 2012 Опубликовано 12 апреля, 2012 · Жалоба А что ту такого? Да, others в разных контекстах имеет разный смысл. Как будто в других языках такого нет. Я лично использую sig <= (other => 0); Поддерживаю!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
eugen_pcad_ru 0 12 апреля, 2012 Опубликовано 12 апреля, 2012 · Жалоба А что ту такого? Да, others в разных контекстах имеет разный смысл. Как будто в других языках такого нет. Я лично использую sig <= (other => 0); +1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Swup 0 12 апреля, 2012 Опубликовано 12 апреля, 2012 (изменено) · Жалоба А что ту такого? Да, others в разных контекстах имеет разный смысл. Как будто в других языках такого нет. Я лично использую sig <= (other => 0); А есть что либо подобное в verilog? Я вчера это так написал ( передача на выход максимального значения, с сохранением знака): for (j=0;j<=WIDTH-2;j=j+1) begin OUT_tmp[j]<=1; end OUT_tmp[WIDTH-1]<=OUT_zn; end Изменено 12 апреля, 2012 пользователем Swup Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
topor_topor 0 12 апреля, 2012 Опубликовано 12 апреля, 2012 (изменено) · Жалоба А есть что либо подобное в verilog? Я вчера это так написал ( передача на выход максимального значения, с сохранением знака): for (j=0;j<=WIDTH-2;j=j+1) begin OUT_tmp[j]<=1; end OUT_tmp[WIDTH-1]<=OUT_zn; end В Veriloge можно так: `define WIDTH 8 assign sig = {`WIDTH {1'b0}}; // Все нули assign OUT_tmp[`WIDTH-1:0] = {OUT_zn, {(`WIDTH-2){1'b1}}}; Изменено 12 апреля, 2012 пользователем Torpeda Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stu 0 12 апреля, 2012 Опубликовано 12 апреля, 2012 · Жалоба а если использовать приставку System к слову Verilog, то: assign sig = '0; // Все нули Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
topor_topor 0 12 апреля, 2012 Опубликовано 12 апреля, 2012 · Жалоба а если использовать приставку System к слову Verilog, то: assign sig = '0; // Все нули А в просто Verilog есчё просче: assign sig = 0; // Все нули Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 12 апреля, 2012 Опубликовано 12 апреля, 2012 · Жалоба А в просто Verilog есчё просче: assign sig = 0; // Все нули ну если глаза на предупреждение синтезатора закрыть то да %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться