|
Power-Up Level, Altera, verilog |
|
|
|
Oct 28 2006, 09:31
|
Частый гость
 
Группа: Свой
Сообщений: 125
Регистрация: 15-11-04
Пользователь №: 1 135

|
Как им управлять? У меня много триггеров в дизайне. После конфигурации нужно чтобы они были в заданных состояниях. Для каждого триггера прописывать атрибут Power-Up Level - не удобно. Когда у меня был QuartusII 2.2 я делал так: Код always @(posedge Clk or negedge Reset_) if (!Reset_) trigger <= 1; else trigger <= ....; Обычный вериложный ресет. Только вход Reset_ не был выведен на pin. И всё работало. Теперь я работаю с Cyclone, а он в Quartus 2.2 не поддерживается. Поставил Quartus 4 - он не понимает такую конструкцию. Quartus 6 - понимает для половины триггеров!!! Как быть? Чувствую придётся на ACEX и Quartus2.2 возвращаться ;(((
|
|
|
|
|
Oct 28 2006, 19:29
|
Частый гость
 
Группа: Свой
Сообщений: 125
Регистрация: 15-11-04
Пользователь №: 1 135

|
Объясни пожалуйста подробнее Как поставить: -Power-Up Don't Care -NOT Gate Push Back Цитата Но по первому же фронту клока перезаписывается нулевое состояние предыдущего триггера Не понял какой предыдущий триггер имеется в виду. Цитата Дело в самой конструкции. При опции NOT-GATE PUSH-BACK ON при моделировании отрабатывается установка в 1 до активного уровня reset. Я так понимаю, что активного уровня никогда не будет, потому что Reset_ я никуда не вывел. А входные unused pins имеют по умолчанию пассивный уровень. Цитата Нужна конструкция типа if (!Reset_) trigger <= 1; else if (enable) trigger <= input_data; Так и есть. Только у меня обычный автомат. И (enable) - функция от входов и триггеров. Например: Код always @(posedge Clk or negedge Reset_) if (!Reset_) begin Page <= 0; Flash_RE_ <= 1; // USB_WR_ <= 1; USB_OE_Out_ <= 0; // USB_OE_ <= 1; USB_Dr <= 0; // ws <= 0; end else begin if (StartFlag) ws <= WaitState; else if (!WaitFlag && (ws != 0)) ws <= ws - 1; // Flash_RE_ <= !( StartFlag || WaitFlag || (ws != 0)); // USB_WR_ <= !(!Flash_RE_ && !WaitFlag && (ws == 0)); USB_OE_ <= !(!Flash_RE_ && !WaitFlag && (ws == 0)); // if (ReadFlash_Start) Page <= Flash_Read_Page; else if (!USB_WR_) Page <= Page - 1; // USB_OE_Out_ <= (Page != 0); // USB_Dr <= Flash_D; end
|
|
|
|
|
Oct 31 2006, 12:56
|
Частый гость
 
Группа: Свой
Сообщений: 125
Регистрация: 15-11-04
Пользователь №: 1 135

|
Чёрт возьми! А ведь это не от Quartusa зависит. Дело в том, что в Cyclone есть асинхронный Load, а в ACEX нет. Цитата Due to these effects, if you specify a particular reset value (other than 0), you may cause your synthesis tool to use the asynchronous clear (aclr) signals available on the registers to implement the high bits with NOT gate push-back. In that case, the registers will look as though they power up to the specified reset value. You will see this behavior, for example, if your design targets FLEX 10KE or ACEX devices. When a load signal is available in the device, your synthesis tools can implement a reset of 1 or 0 value by using an asynchronous load of 1 or 0. When the synthesis tool uses an asynchronous load signal, it is not performing NOT gate push-back, so the registers will power up to a 0 logic level.
|
|
|
|
|
Oct 31 2006, 16:04
|
Частый гость
 
Группа: Свой
Сообщений: 125
Регистрация: 15-11-04
Пользователь №: 1 135

|
Цитата(sazh @ Oct 31 2006, 17:55)  Дело в том, что в Cyclone есть асинхронный Load, а в ACEX нет.////////////// Ну и что. Если есть асинхронный load, нет aset. Я так понял, что в ACEX триггер имеющий асинхронный пресет автоматом получает NOT Gate Push Back. А в Cyclone - нет. У него свободы больше. Он может иметь асинхронный пресет и нулевой power-up level. Цитата(sazh @ Oct 31 2006, 17:55)  При моделировании. rest_n можно ведь и не активизировать. Я моделирую RTL в ncsim. А поведение кристала смотрю асциллографом. Часть триггеров получают NOT Gate push back, а часть нет. Цитата(sazh @ Oct 31 2006, 17:55)  А Ваше описание на автомат не похоже. неужели в RTL просмотрщике Вы видите машину состояний? Я не знаю я, как эту схему правильно назвать  /////////////////////////////// Цитата(klop @ Oct 31 2006, 18:17)  Ребяты а почему бы не сделать вход ресет у FPGA. И пропадет куча проблем сразу. Да кстати SM которые кодируются one-hot без ресета могут себя совсем плохо себя вести. Я уже к этому и склоняюсь!
|
|
|
|
|
Oct 31 2006, 16:12
|
Местный
  
Группа: Свой
Сообщений: 433
Регистрация: 28-02-06
Пользователь №: 14 788

|
Цитата(TailWind @ Oct 31 2006, 19:04)  Я уже к этому и склоняюсь! Я думаю что сэкономите много времени и нервов. Кроме ряда специальных случаев ресет (синхронный или асинхронный) применим везде.
|
|
|
|
|
Oct 31 2006, 17:51
|
Частый гость
 
Группа: Свой
Сообщений: 125
Регистрация: 15-11-04
Пользователь №: 1 135

|
Цитата(vetal @ Oct 31 2006, 20:26)  reset можно сформировать внутри fpga(sram) 1-dff-dff-reset, триггерам задать значение после конфигурирования - '0' и запретить их оптимизацию, тогда после загрузки сформируется коротенький импульс. У меня Cyclon во время конфигурации подключён к рабочей шине. Пока прошивки нет, на выводах weak-pullup. (то что нужно). Пока не подействует Reset может получиться пичок. Я вот думаю затянутый conf_done подать на DEV_OE и Reset_.
|
|
|
|
|
Nov 1 2006, 10:35
|

МедвеД Инженер I
   
Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951

|
Цитата(vetal @ Oct 31 2006, 21:20)  Цитата Чёрт, vetal, работает!!!  )) Я не черт!  У меня так ниос сбрасывается. жестко Вы с ним (с ниосом) PLL же есть наверняка..от запуска PLL сброс и сформировали бы
--------------------
Cogito ergo sum
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|