Verilog HDL 기반 모드 60BCD 코드 카운터 설계

5229 단어 Verilog

Verilog HDL 기반 모드 60BCD 코드 카운터 설계


최근에verilog HDL 언어를 배웠는데 자신이 모드 60의 계수기를 썼는데 계수 인코딩은 BCD 코드로 위치 리셋이 가능하고 비트 출력이 있습니다. 코드는 다음과 같습니다.
module counter_60(clkin, rst_n, ld, data, out, c);
input clkin, rst_n, ld;
input [7:0] data;
output [7:0] out;
output c;
    reg c = 0;
    reg[3:0] ten, unit;
    assign out = {ten, unit};
    always@(posedge clkin or negedge rst_n or posedge ld)
    begin   
        if(!rst_n)
            {ten, unit} <= 0;
        else if(ld)
            {ten, unit} <= data;
        else
        begin
            if(ten == 5)
            begin
                if(unit == 8)
                begin
                    c = 1;
                    unit <= unit+1;
                end
                else if(unit == 9)
                begin
                    c = 0;
                    {ten, unit} <= 0;
                end
                else
                    unit <= unit+1;
            end
            else if(unit == 9)
            begin
                ten <= ten+1;
                unit <= 0;
            end
            else
                unit <= unit+1;
        end
    end
endmodule

test bench 파일은 다음과 같습니다.
`timescale 1 ps/ 1 ps
module digitalClock_vlg_tst();
// constants                                           
// general purpose registers
reg eachvec;
// test vector input registers
reg clkin;
reg [7:0] data;
reg ld;
reg rst_n;
// wires                                               
wire c;
wire [7:0]  out;

// assign statements (if any)                          
digitalClock i1 (
// port map - connection between master ports and signals/registers   
    .c(c),
    .clkin(clkin),
    .data(data),
    .ld(ld),
    .out(out),
    .rst_n(rst_n)
);

initial
begin
    rst_n = 1;
    ld = 0;
    clkin = 0;
    data = 0;
    #5 rst_n = 0;
    #5 rst_n = 1;
    repeat(2000)
        #5 clkin = ~clkin;
    data = {4'd4, 4'd7};
    ld = 1;
    #5 ld = 0;
    repeat(20)
        #5 clkin = ~clkin;
    $stop;
end                                     
endmodule

좋은 웹페이지 즐겨찾기