kyb 0 3 марта, 2006 Опубликовано 3 марта, 2006 (изменено) · Жалоба С синхронным сбросом все понятно. Вопрос снят. Изменено 3 марта, 2006 пользователем kyb Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 3 3 марта, 2006 Опубликовано 3 марта, 2006 · Жалоба То 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kyb 0 3 марта, 2006 Опубликовано 3 марта, 2006 · Жалоба to sazh Я решил, что перед тем как задать вопрос лучше найти три своих решения ;) А суть проблемы в следующем. Работать мне приходится только с Xilinx, а раньше у SpartanXL (есть у нас на поддержке система с такой ПЛМ) установка и сброс триггера были асинхронными и совпадали. При синтезе FPGAExpress очень сильно ругался и поэтому для всех триггеров мы заводили глобальный сброс через список чувствительности (как я и нарисовал в примере). Сейчас приходится тащить один их проектов так, чтобы сохранить хоть бы общую совместимость. Да и, честно говоря, момент когда появилась возможность использовать синхронные сброс и установку я пропустил. Поэтому я и выразил в более ранних постах свои взляды на описание сброса триггеров. А с глобальным сбросом идея такова, чтобы сделать общий глобальный сброс, но не выводить его через отдельный контакт наружу. Сброс схемы делать через перепрограммирование или, ну если уж очень надо, вывести GSR через STARTUP (спасибо за указание) наружу. Ну это так, философия. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться