1、掌握计数器的逻辑功能及应用方法
2、掌握任意进制计数器的设计方法
3、掌握数字电路多个输出波形相位关系的正确测试方法
4、了解非均匀周期信号波形的测试方法






module counter_5(
input wire clk,
input wire rst_n,
output reg counter
);
reg [2:0]cnt;
always @(posedge clk or negedge rst_n)
if(!rst_n)
cnt <= 1'b0;
else if(cnt == 3'd4)
cnt <= 1'b0;
else
cnt <= cnt +1'b1;
always @(posedge clk or negedge rst_n)
if(!rst_n)
counter <= 1'b0;
else if(cnt == 3'd3)
counter <= 1'b1;
else
counter <= 1'b0;
endmodule
`timescale 1ns/1ns
`define clk_period 20
module counter_5_tb;
reg clk;
reg rst_n;
wire counter;
counter_5 counter_5_inst(
.clk(clk),
.rst_n(rst_n),
.counter(counter)
);
initial clk = 1'b0;
always #(`clk_period/2) clk = ~clk;
initial begin
rst_n = 1'b0;
#(`clk_period*10);
rst_n = 1'b1;
#(`clk_period*500);
$stop;
end
endmodule

module sequence(
input wire clk,
input wire rst_n,
output reg seq
);
reg [2:0]cnt;
always @(posedge clk or negedge rst_n)
if(!rst_n)
cnt <= 1'b0;
else if(cnt == 3'd4)
cnt <= 1'b0;
else
cnt <= cnt + 1'b1;
always @(*)
case(cnt)
3'b000 : seq = 1'b1;
3'b001 : seq = 1'b0;
3'b010 : seq = 1'b1;
3'b011 : seq = 1'b0;
3'b100 : seq = 1'b1;
endcase
endmodule
`timescale 1ns/1ns
`define clk_period 20
module sequence_tb;
reg clk;
reg rst_n;
wire seq;
sequence sequence_inst(
.clk(clk),
.rst_n(rst_n),
.seq(seq)
);
initial clk = 1'b0;
always #(`clk_period/2) clk = ~clk;
initial begin
rst_n = 1'b0;
#(`clk_period*10);
rst_n = 1'b1;
#(`clk_period*100);
$stop;
end
endmodule

1、分频比为N=5的整数分频电路波形图。

2、输出序列码10101波形图:

1、掌握移位寄存器的逻辑功能
2、掌握移位寄存器的具体应用方法
3、掌握移位寄存型计数器的自启动特性的检测方法
4、掌握不均匀周期信号波形的测试方法
用移位寄存器附加数据选择器电路设计101001序列信号发生器,要求具有自启动特性,用实验验证。用示波器双踪观察并记录时钟脉冲和输出波形。
设计过程:

选用SR4RLED和M8_1E进行设计




