欢迎使用CSDN-markdown编辑器

来源:互联网 发布:python 中英文混合 编辑:程序博客网 时间:2024/05/18 20:04

Quartus扫描生成的电路RTL图:
1.作业1生成的电路图
2.作业2 生成的电路图

电路的波形仿真截图:
1.作业1仿真波形
2.作业2仿真波形

代码块

作业1---------------------------------module mod6cnt(    input wire RST,    input wire CLK,    output reg [2:0] CNT    );always @(posedge RST or posedge CLK)    begin        if(RST == 1)            CNT<=0;        else if(CNT==5)            CNT<=0;        else             CNT<=CNT+1;    endendmodule作业2--------------------------------------module counter(        input RST,        input CLK,        output reg [3:0] CNT);        parameter MAX_0=4'b0110;        parameter MAX_1=4'b0111;        parameter MAX_2=4'b1000;        parameter MAX_3=4'b1001;        reg clk_in;        wire [1:0] cnt_out;         counter_4 i_counter_4(                    .RST(RST),                    .CLK(clk_in),                    .CNT(cnt_out));        initial        begin            clk_in<=0;        end        always @(posedge RST,posedge CLK)        begin            if(RST)            begin                CNT<=4'b0000;            end            else            begin                case(cnt_out)                    2'b00:                        begin                            if(CNT==MAX_0)                            begin                                CNT<=4'b0000;                                clk_in<=1;                            end                            else                            begin                                CNT<=CNT+1;                                clk_in<=0;                            end                        end                    2'b01:                        begin                            if(CNT==MAX_1)                            begin                                CNT<=4'b0000;                                clk_in<=1;                            end                            else                            begin                                CNT<=CNT+1;                                clk_in<=0;                            end                        end                    2'b10:                        begin                            if(CNT==MAX_2)                            begin                                CNT<=4'b0000;                                clk_in<=1;                            end                            else                            begin                                CNT<=CNT+1;                                clk_in<=0;                            end                        end                    2'b11:                        begin                            if(CNT==MAX_3)                            begin                                CNT<=4'b0000;                                clk_in<=1;                            end                            else                            begin                                CNT<=CNT+1;                                clk_in<=0;                            end                        end                endcase            end        endendmodulemodule counter_tb();    reg CLK;    reg RST;    wire [3:0] CNT;    counter i_counter(                .CLK(CLK),                .RST(RST),                .CNT(CNT));    initial    begin        CLK<=0;        RST<=1;        #2 RST<=0;    end    always    begin        #1 CLK<=~CLK;    endendmodulemodule counter_4(input CLK,        input RST,        output reg [1:0] CNT);        parameter MAX=2'b11;        always @(posedge RST,posedge CLK)        begin            if(RST)            begin                CNT<=0;            end            else            begin                if(CNT==MAX)                begin                    CNT<=0;                end                else                begin                    CNT<=CNT+2'b01;                end            end        endendmodule
0 0
原创粉丝点击