billidean 0 19 июля, 2013 Опубликовано 19 июля, 2013 · Жалоба Здравствуйте всем. Сейчас уже не модно писать коды только на одном VHDL, все работают сразу на двух языках VHDL и Verilog. Либо пишут только на одном, а примеры читают на обоих языках. Вот и я решил изучить Verilog. И первое, с чем столкнулся это начальное состояние входов/выходов. Например в VHDL я пишу data_in : input std_logic_vector(7 downto 0) := (others => '0'); data_out : output std_logic_vector(7 downto 0) := (others => '1'); . А как это же сделать на Veriloge? В википедии нашел такую фразу: "initial"-блок определяет какие действия должны быть сделаны при старте программы. Этот блок не является синтетизируемым и обычно используется для тестирования. и стало вообще непонятно, как мне правильно инициализировать входы/выходы/регистры. Прошу помощи у знающих. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 19 июля, 2013 Опубликовано 19 июля, 2013 · Жалоба Здравствуйте всем. В википедии нашел такую фразу: и стало вообще непонятно, как мне правильно инициализировать входы/выходы/регистры. а при помощи ресета не пробовали? Например в VHDL я пишу data_in : input std_logic_vector(7 downto 0) := (others => '0'); data_out : output std_logic_vector(7 downto 0) := (others => '1'); а можно узнать откуда Вы это взяли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
billidean 0 19 июля, 2013 Опубликовано 19 июля, 2013 · Жалоба а при помощи ресета не пробовали? Не всегда сигнал Ресет имеется в наличии, например если пишем Мастер-модуль, который уже сам будет управлять остальными модулями и раздавать им Ресеты. Да и вообще написание модуля без Ресета. а можно узнать откуда Вы это взяли? Довольно часто сам такие конструкции использовал, если хотел, чтобы при подаче питания на выходе был определенный сигнал. и для чего Вам это нужно? (симулирование или для работы в "железе") Мне хочется иметь систему, которая и при начале моделирования и при подаче питания в железе инициализировалась нужными мне значениями. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akorud 0 19 июля, 2013 Опубликовано 19 июля, 2013 · Жалоба и стало вообще непонятно, как мне правильно инициализировать входы/выходы/регистры. reg [2:0] a = 3'b101; ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mad_kvmg 0 19 июля, 2013 Опубликовано 19 июля, 2013 · Жалоба Мне хочется иметь систему, которая и при начале моделирования и при подаче питания в железе инициализировалась нужными мне значениями. После загрузки FPGA, все синхронные элементы сбросятся в ноль, это не зависящий от вас процесс. Далее, по ресету вы можете установить нужные вам логические состояния. Так же есть директивы синтезатору, например, (* INIT = "0001" *) //Initialization value for XST reg [3:0] A; С моделированием другое дело. Если ничего не путаю, то по стандарту verilog, zero time состояние для reg и wire - X. По этому собственно и нужно сбрасывать регистры, когда по логике работы схемы этого можно и не делать, плюс не тянуть цепи сброса по всему кристаллу. На SV у типа bit zero time состояние 0, поэтому не нужно делать синхронные сбросы, только для целей симуляции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
billidean 0 19 июля, 2013 Опубликовано 19 июля, 2013 · Жалоба reg [2:0] a = 3'b101; ? т.е. такая конструкция: module xxx(a,b, res); input a; input b; output [2:0] res; reg [2:0] res = 3'b000; будет нормально работать и при моделировании и при синтезе? Возможно ли применение такой строки: output [2:0] res = 3'b000; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akorud 0 19 июля, 2013 Опубликовано 19 июля, 2013 · Жалоба Возможно ли применение такой строки: output [2:0] res = 3'b000; module xxx ( output reg [2:0] a = 3'b101 ) Должно работать. Я придерживаюсь мнения, что если можно обойтись без ресета - лучше обойтись. Синтезатор гарантирует, что при загрузке синхронные элементы будут установлены в начальное состояние. А при симуляции - у нас принцип такой - если входы определены, через конечное время все внутренние элементы модуля тоже должны принять определенное состояние. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
billidean 0 19 июля, 2013 Опубликовано 19 июля, 2013 · Жалоба Должно работать. Мне бы поконкретнее, т.к. если в самом начале изучения начать прикрывать глаза на некоторые важные вещи, то потом все это может в хороший "хвост" накопиться. Если можно, то мне бы ссылочку на "правильную" литературу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akorud 0 19 июля, 2013 Опубликовано 19 июля, 2013 · Жалоба Мне бы поконкретнее, т.к. если в самом начале изучения начать прикрывать глаза на некоторые важные вещи, то потом все это может в хороший "хвост" накопиться. Если можно, то мне бы ссылочку на "правильную" литературу. Так это же просто синтаксис языка. Прикрыть глаза вам не даст ни синтезатор ни симулятор - просто укажут на синтаксическую ошибку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 5 19 июля, 2013 Опубликовано 19 июля, 2013 · Жалоба в ПЛИС, где значение регистра загружаемое, то есть Альтера/Ксайлинкс средства синтеза понимают и initial и reg [2:0] a = 3'b101; по умолчанию, то есть если нету initial или нету = в объявлении, регистры ставятся в 0 отдельный вопрос, что это не будет работать например на Актеле или в ASI-ах, но я думаю, это пока не волнует :) ----------- для того чтобы поставить выход в определенное положение (мне кстати тоже приведенная VHDL конструкция не нравится) можно ..... output ao; .... reg a=0; assign ao=a; возможно в SV-шном объявлении output reg | output logic можно записать инициализатор в объявление, но я так не делал -------------- по поводу предопределенного значения входа - ну это как-то противоречит здравому смыслу, ну то есть можно подтянуть слабыми weak0, weak1 сигналами для какой-то безумной симуляции, без тестбенча, но для практического применеия чего-то я не могу придумать вообще что это такое :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться