0

このリング カウンターを変更して、最上位ビットから最下位ビットにシフトし、最上位ビットにリセットする必要があります。出力は次のようになります。

100000 
010000 
001000 
000100  
000010 
000001 
100000 

リングカウンター

module ringcounter(clk, rst, count);  
    input clk, rst; 
    output [5:0] count; 
    wire clk, rst; 
    reg [5:0] count = 6'b1;  
    // Respond to the positive-going pulse edge     
    always @ ( posedge clk ) 
        begin   
        if ( ~rst )   
            begin     
            count <= count << 1;    
            count[0] <= count[5];   
        end 
    end  
    // Respond to the positive-going reset signal 
    always @ ( posedge rst ) 
    begin   
        count <= 6'b1; 
    end  
endmodule 

リングカウンターテストベンチ

module ringcounter_tb();  
    reg clk = 0, rst = 0; 
    wire [5:0] count;  
    always #1 clk = !clk; // Create a clock pulse  

    initial begin   
    $monitor("At time %4t, count = %b", $time, count );  
        #20 rst = 1;   
        #1  rst = 0;
        #20 $finish; 
    end  

    ringcounter cntr01 ( .clk(clk), .rst(rst), .count(count) );  
endmodule 

私はまだデジタルロジックに非常に慣れていないので、ご容赦ください。このリングカウンターをどのように変更できるかについて、少し混乱しています。これがどのように機能するかについてのあらゆる種類の助け、または説明をいただければ幸いです。

4

2 に答える 2

0

https://gist.github.com/vividvilla/4605985

これは機能するはずです。テストベンチとプログラムの出力の両方が含まれています:)

于 2015-12-07T04:27:42.763 に答える