Перейти к содержанию
    

Синтаксис в Verilog для знаков = и <=

С синхронным сбросом все понятно.

 

Вопрос снят.

Изменено пользователем kyb

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То kyb. А зря Вы отредактировали свое сообщение. Тем более действительно интересен момент установки внутренних регистров в то или иное состояние по включению питания.

Стандартный подход средсвами синтезатора или библиотечного элемента того или иного пакета.

У xilinx как я понимаю это примитив STARTUP, у Альтеры опция синтезатора, не для всех семейств, используя асинхронные входы триггера.

/* NOT-GATE PUSH-BACK ON (ALTERA), работает по включению только с FPGA

при этом игнорирует опции Power-Up level (High или Low) â Assignment Editor

NOT-GATE PUSH-BACK OFF (ALTERA),

при этом отрабатывает опции Power-Up level (High или Low) по входам регистра

*/

module rg_xor_b

(

input clk,

input [7:0] in,

input ce,

input clr,

output reg [7:0] fdce_dffe

);

 

always @ (posedge clk or posedge clr)

begin

if (clr)

fdce_dffe <= 8'd2;

else if (ce)

fdce_dffe <= in;

end

 

endmodule

 

Можно обойтись вообще без установок используя ресурсы кристалла. Базируясь на том, что по включению питания все триггера устанавливаются по умолчанию в ноль (Так оно и есть, но к сожалению нигде не написано). При этом полная переносимость из системы в систему

module rg_xor_a

(

input clk,

input [3:0] in_data,

input enable_clk,

output [3:0] out_data

);

 

reg [3:0] rg_data;

 

assign out_data = rg_data ^ 4'd2; // по включению питания 4'd2

 

always @ (posedge clk)

begin

if (enable_clk)

rg_data <= in_data ^ 4'd2;

end

 

endmodule

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

to sazh Я решил, что перед тем как задать вопрос лучше найти три своих решения ;)

 

А суть проблемы в следующем. Работать мне приходится только с Xilinx, а раньше у SpartanXL (есть у нас на поддержке система с такой ПЛМ) установка и сброс триггера были асинхронными и совпадали. При синтезе FPGAExpress очень сильно ругался и поэтому для всех триггеров мы заводили глобальный сброс через список чувствительности (как я и нарисовал в примере). Сейчас приходится тащить один их проектов так, чтобы сохранить хоть бы общую совместимость.

 

Да и, честно говоря, момент когда появилась возможность использовать синхронные сброс и установку я пропустил. Поэтому я и выразил в более ранних постах свои взляды на описание сброса триггеров.

 

А с глобальным сбросом идея такова, чтобы сделать общий глобальный сброс, но не выводить его через отдельный контакт наружу. Сброс схемы делать через перепрограммирование или, ну если уж очень надо, вывести GSR через STARTUP (спасибо за указание) наружу. Ну это так, философия.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...