2009-01-28 52 views
3

我發佈了answeranother stackoverflow question,這需要一些數字邏輯以Verilog或VHDL實現,以便可以將其編程到FPGA中。如何以Verilog或VHDL實現這個數字邏輯?

您將如何使用Verilog,VHDL或任何其他硬件描述語言實現以下邏輯圖?

編號框表示字段中的位。每個字段具有 K位,並且當前的位掩碼將由計算機系統(使用鎖存寄存器或等價物)提供。 下一個中的位將被讀回到同一計算機系統中。

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

參見:this stackoverflow question

+0

僅供參考,圖片鏈接是(現在)打破了。 – 2011-02-02 22:42:19

+0

@ luis.espinal對我來說顯示得很好,但我知道很多企業網頁過濾器(例如WebSense)會過濾掉第三方圖片。 – 2011-02-02 22:59:29

回答

2

像這樣的事情?

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 

(免責聲明:LINTED但沒有模擬)