Pergunta

Eu postei uma resposta outra questão stackoverflow que requer alguma lógica digital a ser implementado em Verilog ou VHDL para que ele possa ser programado em um FPGA.

Como você poderia implementar o seguinte diagrama lógico em Verilog, VHDL, ou qualquer outra linguagem de descrição de hardware?

As caixas numeradas representar bits em um campo. Cada campo tem K bits, e os bits para atual e máscara será fornecido por um sistema de computador (utilizando um registo latched ou equivalente). Os bits em próxima será lido de volta para esse mesmo sistema de computador.

alt texto http://img145.imageshack.us/img145/5125/bitshifterlogicdiagramkn7 .jpg

Veja também: este stackoverflow pergunta

Foi útil?

Solução

Algo como isso?

module scheduler
 #( parameter K = 10 )
  (
   input wire [K:1] current,
   input wire [K:1] mask,
   output reg [K:1] next
   );

   reg [K:1] a;
   reg [K:1] b;

   //'[i+1]' busses that wrap.
   // eg, for a 4-bit bus...
   // a[i]:        a[4],a[3],a[2],a[1] (obviously...)
   // a_wrap[i]:   a[1],a[4],a[3],a[2] 
   wire [K:1] mask_wrap    = { mask[1],mask[K:2] };
   wire [K:1] a_wrap       = { a[1], a[K:2] };
   wire [K:1] current_wrap = { current[1], current[K:2] };

   integer i;
   always @( * ) begin
      for( i=1; i<=K; i=i+1 ) begin
         a[i] = ~current_wrap[i] && b[i];
         b[i] = a_wrap[i] || mask_wrap[i];
         next[i] = ~a[i] && mask_wrap[i];
      end
   end


endmodule

(Disclaimer: linted mas não simulado)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top