Postoroniy_V 0 18 февраля, 2014 Опубликовано 18 февраля, 2014 · Жалоба Возник еще один вопрос, не могу разобраться в чем дело: Имеется код: ..... При компиляции выдается сообщение: Error (10044): Verilog HDL error at project.v(37): expression cannot reference entire array "DistCode" wire[2:0] DistCode; нужно почитать про packed и unpacked array Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smipp 0 5 апреля, 2014 Опубликовано 5 апреля, 2014 · Жалоба Посоветуйте как написать на верилоге модуль задержки сигнала с кодом управления от 0 до N. При коде 0 сигнал проходит напрямую, не 0 - с задержкой. Можно ли получить регистровый выход а не комбинационный? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 6 апреля, 2014 Опубликовано 6 апреля, 2014 · Жалоба Посоветуйте как написать на верилоге модуль задержки сигнала с кодом управления от 0 до N. При коде 0 сигнал проходит напрямую, не 0 - с задержкой. Можно ли получить регистровый выход а не комбинационный? Обычная линия задержки, несколько строчек на любом из языков. В случае если нужна задержка 0 невозможно получить регистровый выход, любой регистр даёт задержку в 1 такт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
o_khavin 0 6 апреля, 2014 Опубликовано 6 апреля, 2014 · Жалоба Посоветуйте как написать на верилоге модуль задержки сигнала с кодом управления от 0 до N. При коде 0 сигнал проходит напрямую, не 0 - с задержкой. Можно ли получить регистровый выход а не комбинационный? В каких попугаях задержка: километрах, секундах, тактах? На верилоге можно написать много всякого, но совсем не всё это реализуемо в железе. Будет проще, если Вы огласите саму задачу, для которой понадобилась такая задержка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smipp 0 7 апреля, 2014 Опубликовано 7 апреля, 2014 · Жалоба Обычная линия задержки, несколько строчек на любом из языков. В случае если нужна задержка 0 невозможно получить регистровый выход, любой регистр даёт задержку в 1 такт. Так я и думал.... Хотелось получить что-то универсальное, а то с 0 какая-то условность получается. Может в 1 каскаде использовать регистр с синхронным SETом как-то? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 8 апреля, 2014 Опубликовано 8 апреля, 2014 · Жалоба Так я и думал.... Хотелось получить что-то универсальное, а то с 0 какая-то условность получается. Может в 1 каскаде использовать регистр с синхронным SETом как-то? Generate вам в помощь. Что-то типа : generate if(P_DELAY == 0) assign odata = idata; else begin .... end endgenerate Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 8 апреля, 2014 Опубликовано 8 апреля, 2014 · Жалоба Если запас по времени позволяет, то можно сделать выходной регистр, работающий по противоположному фронту, таким образом он не внесет задержки на 1 такт (внесет на пол-такта, что, если по времени все в порядке, не даст задержки). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 27 января, 2015 Опубликовано 27 января, 2015 · Жалоба Сделаем из этой темы аналог Странные вопросы по VHDL, только для верилога. Вопрос: как в Verilog сделать: имеем модуль, у которого есть порт на выход (пусть условно будет 3 бита). Модуль инстантируется в более верхнем модуле. Нужно один из битов порта никуда не подключать. Примерно так: .port1_out({port1_out[0], ничего, port1_out[1]}). Как это сделать максимально красиво? Можно объявить однобитный wire, никуда его не подключать, прописать вместо "ничего". Можно даже не объявлять, он итак будет однобитным. А красиво как? В VHDL например можно сделать так: port1_out(2) <= port1_out(0), port1_out(1) <= open, port1_out(0) <= port1_out(1) А как в верилоге сделать аналог опен? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 27 января, 2015 Опубликовано 27 января, 2015 · Жалоба Сделаем из этой темы аналог Странные вопросы по VHDL, только для верилога. Вопрос: как в Verilog сделать: имеем модуль, у которого есть порт на выход (пусть условно будет 3 бита). Модуль инстантируется в более верхнем модуле. Нужно один из битов порта никуда не подключать. Примерно так: .port1_out({port1_out[0], ничего, port1_out[1]}). Как это сделать максимально красиво? Можно объявить однобитный wire, никуда его не подключать, прописать вместо "ничего". Можно даже не объявлять, он итак будет однобитным. А красиво как? В VHDL например можно сделать так: port1_out(2) <= port1_out(0), port1_out(1) <= open, port1_out(0) <= port1_out(1) А как в верилоге сделать аналог опен? Правильнее всего прицепить выход к 3-битному wire (или logic - кому как удобнее) и далее задействовать из этого вектора только 2 бита. Это самый error proof способ. Всё остальное чревато разными неприятными последствиями. З Ы Будет варнинг на висящий в воздухе выход и цепь с одним коннектом - игнорировать. З Ы 2 Ещё более правильно сделать внутренний модуль с параметром, который определяет ширину выходной шины. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 27 января, 2015 Опубликовано 27 января, 2015 · Жалоба Примерно так: .port1_out({port1_out[0], ничего, port1_out[1]}). "ничего" - это 1'bx. Или надо в другую сторону? В другую сторону, просто дописать туда "dummy_bit" - он объявится сам (implicit) как 1-битный wire. IMHO так оно красивее всего (на мой взгляд, красиво == максимально компактно, т.е. без лишних объявлений, строк и вообще, букв, чему такой способ полностью соответствует). module t (in, out); input [2:0] in; output [2:0] out; assign out = ~in; endmodule module top (in, out); input [1:0] in; output [1:0] out; t t_inst (.in({in[1],1'bx,in[0]}), .out({out[1], dummy_bit, out[0]})); endmodule Имеем лишь один варнинг по поводу одного бита входа, который "floating". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 27 января, 2015 Опубликовано 27 января, 2015 · Жалоба В VHDL например можно сделать так: port1_out(2) <= port1_out(0), port1_out(1) <= open, port1_out(0) <= port1_out(1) В VHDL так сделать нельзя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 27 января, 2015 Опубликовано 27 января, 2015 · Жалоба В другую сторону, просто дописать туда "dummy_bit" - он объявится сам (implicit) как 1-битный wire. IMHO так оно красивее всего (на мой взгляд, красиво == максимально компактно, т.е. без лишних объявлений, строк и вообще, букв, чему такой способ полностью соответствует). module t (in, out); input [2:0] in; output [2:0] out; assign out = ~in; endmodule module top (in, out); input [1:0] in; output [1:0] out; t t_inst (.in({in[1],1'bx,in[0]}), .out({out[1], dummy_bit, out[0]})); endmodule Имеем лишь один варнинг по поводу одного бита входа, который "floating". Очень плохая привычка не объявлять сигналы. В случае если dummy_bit не однобитный реально сгенерится однобитный вектор. В общем bad coding style. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 27 января, 2015 Опубликовано 27 января, 2015 · Жалоба да я обычно шину всю вывожу, а уже потом при разборе забиваю ее сигналами ResetModule ResetInstance(.out(reset_vector)); assign {reset3, reset2, dummy, reset1, reset0} = reset_vector; а для пущей понятности еще и их объявляю явно, чтобы не было сомнений с длинной и назначением По мне как раз не читаемо когда все в одну строку очень длинную, с кучей скобой и подскобок, с объявлениями прямо внутри и так далее... А когда все структурировано и блоками, даже много текста - читаемей и красивее и надежнее... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 27 января, 2015 Опубликовано 27 января, 2015 · Жалоба Очень плохая привычка не объявлять сигналы. В случае если dummy_bit не однобитный реально сгенерится однобитный вектор. В общем bad coding style. Плохая привычка и "bad coding style", это: 1) не использовать все возможности языка. 2) объявлять то, что объявлять бессмысленно. 3) вообще, тратить байты и силы на написание ненужных букв. По причинам 2) и 3) - VHDL весь целиком это "bad coding style" :) И это не сигнал. Сигнал подразумевает протекание тока - соединение входа с выходом. В данном случае, это лишь очень удобная возможность языка, позволяющая никуда не подсоединить один бит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 27 января, 2015 Опубликовано 27 января, 2015 · Жалоба "ничего" - это 1'bx. Или надо в другую сторону?В другую, это же выход из более нижестоящего модуля в верхний. В другую сторону, просто дописать туда "dummy_bit" - он объявится сам (implicit) как 1-битный wire. IMHO так оно красивее всего (на мой взгляд, красиво == максимально компактно, т.е. без лишних объявлений, строк и вообще, букв, чему такой способ полностью соответствуетНу я так в исходном сообщении и предложил, сказав, что это некрасиво. А красиво это как в VHDL типа open написать. Но как сказали, и в вхдл так нельзя. Правильнее всего прицепить выход к 3-битному wire (или logic - кому как удобнее) и далее задействовать из этого вектора только 2 бита.Это тоже модификация того, что я предлагал в начале. Прямые и очевидные способы я и так знаю ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться