FPGA作业_阶段一

一、六进制计数器仿真

题目内容如下:
FPGA作业_阶段一_第1张图片

  • 自行绘制的电路结构RTL设计图

FPGA作业_阶段一_第2张图片

  • Quartus扫描生成的电路RTL图

    FPGA作业_阶段一_第3张图片

  • 电路的波形仿真截图

    FPGA作业_阶段一_第4张图片

  • HDL代码
module counter1(CLK,//输入时钟信号
    RST,//输入复位清零信号,异步高电平有效
    CNT);//输出计数值信号
    parameter n=6;
    parameter size=2;
    output[size:0] CNT;
    input RST;
    input CLK;
    reg [size:0]CNT;
    always @ (posedge CLK or posedge RST)//同步时钟和异步高电平清零
    begin
        if(RST) 
        begin
            CNT <= 0;
        end
        else if(CNT == (n-1))
        begin
            CNT <= 0;
        end
        else
        begin
            CNT=CNT+1;
        end
    end
endmodule

二、6-9进制循环计数器

题目内容如下:
FPGA作业_阶段一_第5张图片

  • 自行绘制的电路结构RTL设计图

FPGA作业_阶段一_第6张图片
- Quartus扫描生成的电路RTL图

FPGA作业_阶段一_第7张图片

  • 电路的波形仿真截图

    FPGA作业_阶段一_第8张图片

  • HDL代码

module counter2(CLK,RST,CNT,Q);
    input CLK;
    input RST;
    output [size:0] Q  ;
    output [size:0] CNT;

    parameter n_min=6;
    parameter n_max=9;
    parameter size=3 ;

    reg [size:0] CNT;
    reg [size:0] Q;

    always @(posedge CLK or posedge RST)//同步时钟升和异步高电平清零
        begin
            if(RST)
            begin
                CNT<= 0    ;
                Q  <= n_min;
            end
            else if(CNT >= Q)
            begin
                CNT<= 0  ;
                Q  <= Q+1;
                if(Q >= n_max)
                begin
                    Q  <= n_min;
                end
            end 
            else
            begin
                CNT = CNT+1;
            end
        end
endmodule

你可能感兴趣的:(fpga学习)