Logic 您将如何在Verilog或VHDL中实现此数字逻辑?

Logic 您将如何在Verilog或VHDL中实现此数字逻辑?,logic,hardware,vhdl,verilog,Logic,Hardware,Vhdl,Verilog,我发布了一篇文章,要求用Verilog或VHDL实现一些数字逻辑,以便将其编程到FPGA中 您将如何用Verilog、VHDL或任何其他硬件描述语言实现以下逻辑图 编号框表示字段中的位。每个字段有K位,电流和掩码的位将由计算机系统提供(使用锁存寄存器或等效寄存器)。下一步中的位将被读回同一计算机系统 另请参见:类似的内容 module scheduler #( parameter K = 10 ) ( input wire [K:1] current, input wire

我发布了一篇文章,要求用Verilog或VHDL实现一些数字逻辑,以便将其编程到FPGA中

您将如何用Verilog、VHDL或任何其他硬件描述语言实现以下逻辑图

编号框表示字段中的位。每个字段有K位,电流和掩码的位将由计算机系统提供(使用锁存寄存器或等效寄存器)。下一步中的位将被读回同一计算机系统


另请参见:

类似的内容

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
模块调度程序
#(参数K=10)
(
输入线[K:1]电流,
输入线[K:1]掩模,
下一步输出寄存器[K:1]
);
reg[K:1]a;
reg[K:1]b;
//“[i+1]”是包裹的总线。
//例如,对于4位总线。。。
//a[i]:a[4],a[3],a[2],a[1](显然…)
//a_wrap[i]:a[1],a[4],a[3],a[2]
导线[K:1]掩模_-wrap={mask[1],掩模[K:2]};
导线[K:1]a_-wrap={a[1],a[K:2]};
导线[K:1]电流_-wrap={current[1],current[K:2]};
整数i;
始终@(*)开始

对于(i=1;iI)我可能应该提到这是Verilog-2001。我更喜欢我的总线从[K-1:0]开始……这很公平。总线索引可能应该是零基的。谢谢你的回答。仅供参考,图像链接(现在)坏了。@luis.espinal它对我来说很好,但我知道一个事实,许多公司的网络过滤器(例如,WebSense)将过滤掉第三方图片。DOH!就是这样,我从我的公司网络中看到了这一点。没关系,谢谢:)不用担心。我也讨厌那些过滤器。