sazh 3 21 октября, 2011 Опубликовано 21 октября, 2011 · Жалоба вот код Скачайте с сайта xilinx документ xst.pdf (синтез, verilog-95) и начните с него. Ибо у Вас сборная солянка из верилога 95, 2001, 2005. Значит Вы не понимаете, что делаете. Синтезированное Ваше будет что то типа этого. (обратите внимание, Вы описали 2 по 8 регистров. А все это будет минимизировано до 8 регистров). module a_v ( inclk0, inclk1, shift_r ); output[7:0] inclk0; input inclk1; output [7:0] shift_r; reg [7:0] inclk0_r = 8'b1000_0100; reg [7:0] shift_r_r = 8'b1000_0100; always @(posedge inclk1) begin inclk0_r[7:0] <= {inclk0_r[0], inclk0_r[7:1]}; shift_r_r <= shift_r_r << 7 | shift_r_r >> 1; end assign inclk0 = inclk0_r; assign shift_r = shift_r_r; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stu 0 21 октября, 2011 Опубликовано 21 октября, 2011 · Жалоба to sazh хотите сказать, код с Вашего поста работает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yume 0 21 октября, 2011 Опубликовано 21 октября, 2011 (изменено) · Жалоба to stu А зачем вы используете два абсолютно, не считая названия, (хотя по смыслу названия регистры ого-как разные) одинаковых регистра? И вот эти строки: inclk0_r[7:0] <= {inclk0_r[0], inclk0_r[7:1]}; shift_r_r <= shift_r_r << 7 | shift_r_r >> 1; они же, осмелюсь заметить, совершают одну и ту же операцию, но по разному записаны. Зачем так? Просто любопытно. Изменено 21 октября, 2011 пользователем yume Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stu 0 21 октября, 2011 Опубликовано 21 октября, 2011 · Жалоба выше написано, должно работать! я, когда читаю из, представляю перестановку/сдвиг. но на симуляторе сдвига нет. и если некоторым так будет легче, то module a_v ( inclk0, shift_r ); input inclk0; output reg [7:0] shift_r; initial shift_r = 8'b1000_0100; always @ (posedge inclk0) shift_r <= shift_r << 7 | shift_r >> 1; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Poluektovich 0 21 октября, 2011 Опубликовано 21 октября, 2011 · Жалоба У меня это работает. Симулятор ius8.2. Синтезированный код тож работает, только предустановку shift_r надо сделать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stu 0 21 октября, 2011 Опубликовано 21 октября, 2011 · Жалоба У меня это работает. Симулятор ius8.2. Синтезированный код тож работает, только предустановку shift_r надо сделать. initial shift_r = 8'b1000_0100; это разве не предустановка начальных значений / установка значения в начальный момент времени Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yume 0 21 октября, 2011 Опубликовано 21 октября, 2011 · Жалоба initial shift_r = 8'b1000_0100; это разве не предустановка начальных значений / установка значения в начальный момент времени Да это предустановка, причем синтезабельная. У меня в ModelSim работает - регистр исправно сдвигается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stu 0 21 октября, 2011 Опубликовано 21 октября, 2011 · Жалоба после перезагрузки все ок стало. странно. такого квартус еще не выдавал Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sanyochek21 0 23 октября, 2021 Опубликовано 23 октября, 2021 · Жалоба А если мне нужно прекратить сдвиг в сторону старшего разряда до прихода логической единицы? То есть как только лог 1 появилась на старшем разряде работа регистра должна прекратиться. Как тогда необходимо записать код? 6 минут назад, Sanyochek21 сказал: А если мне нужно прекратить сдвиг в сторону старшего разряда до прихода логической единицы? То есть как только лог 1 появилась на старшем разряде работа регистра должна прекратиться. Как тогда необходимо записать код? В регистре должны быть входы Data, Set, Reset, Write, Clock, Q. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 15 23 октября, 2021 Опубликовано 23 октября, 2021 · Жалоба 1 час назад, Sanyochek21 сказал: То есть как только лог 1 появилась на старшем разряде работа регистра должна прекратиться. Как тогда необходимо записать код? Так и пишете: если в старшем разряде ноль, делаем сдвиг. Для начала приведите свой вариант кода. А там уже будем исправлять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lexx 0 25 октября, 2021 Опубликовано 25 октября, 2021 (изменено) · Жалоба On 9/8/2011 at 3:57 PM, alexx188 said: Кто-нибудь может мне объяснить для чего служат операторы <<< и >>>. И чем они отличаются от << и >>? Первые работают со знаком (автоматически подставляют 1 или 0 в зависимости от msb. Использовать если у вас переменная объявлена как signed), вторые обыкновенный сдвиг. Изменено 25 октября, 2021 пользователем lexx Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sanyochek21 0 6 ноября, 2021 Опубликовано 6 ноября, 2021 · Жалоба 23.10.2021 в 15:06, andrew_b сказал: Так и пишете: если в старшем разряде ноль, делаем сдвиг. Для начала приведите свой вариант кода. А там уже будем исправлять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 176 6 ноября, 2021 Опубликовано 6 ноября, 2021 · Жалоба 23.10.2021 в 13:48, Sanyochek21 сказал: нужно прекратить сдвиг в сторону старшего разряда до прихода логической единицы Данной фразой описано разрешение записи по "0" в предпоследнем разряде. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 15 6 ноября, 2021 Опубликовано 6 ноября, 2021 · Жалоба А нахрена, изивините, вставлять текст картинкой? Это альтернативное мышление какое-то? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 6 ноября, 2021 Опубликовано 6 ноября, 2021 · Жалоба 6 hours ago, Sanyochek21 said: Для начала: в строке 15 должно быть Q <= {Q[WIDTH-2:0], 1'b0}; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться