このリング カウンターを変更して、最上位ビットから最下位ビットにシフトし、最上位ビットにリセットする必要があります。出力は次のようになります。
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
私はまだデジタルロジックに非常に慣れていないので、ご容赦ください。このリングカウンターをどのように変更できるかについて、少し混乱しています。これがどのように機能するかについてのあらゆる種類の助け、または説明をいただければ幸いです。