Как установить сигнал одновременно на время и на часах? - PullRequest
1 голос
/ 06 августа 2020

Я пытаюсь реализовать контроллер с функцией, которая отправляет тот же тактовый сигнал, что и его входные часы. Но при необходимости контроллер может также остановить выходной сигнал. Я реализую его на Xilinx ISE.

Моя идея такова: при достижении входных тактовых импульсов выходной тактовый сигнал устанавливается на 0. Если я хочу отправить тактовые импульсы, то при установке тактовых импульсов clock Я устанавливаю тактовую частоту на 1, но если я хочу остановить тактовую частоту вывода, я устанавливаю тактовую частоту на 0, чтобы другие устройства (все запускаемые с помощью posedge) не обнаруживали posedge.

Вот мой дизайн:

module controller(
    input clk_in,
    input reset,
    output clk_out
    //and other ports
);
    always @(negedge clk_in)
      clk_out<=0;

    always @(posedge clk_in)
      if(reset)
        clk_out<=1;
      else
      begin
        case(cases)
          case1:
          begin
            //do something and halt the output clock
            clk_out<=0;
          end
          case2:
          begin
            //do something and continue the output clock
            clk_out<=1;
          end
        endcase
      end       

Когда я синтезировал дизайн, у меня была ошибка, в которой говорилось, что сигнал clk_out подключен к нескольким драйверам. Есть ли способ решить эту проблему?

1 Ответ

2 голосов
/ 06 августа 2020

У вас есть два разных блока always, которые управляют одним и тем же сигналом clk_out. Об этом вам говорит синтез. Все сигналы в синтезируемом RTL должны управляться только из одного блока.

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

    always @*
        clk_out = enable & clk_in;

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

Кстати, никогда не используйте NBA (<=) при генерации тактовых сигналов, иначе вы получите условия гонки / гонки данных. </p>

...