EDA实验(3)计数器设计
前两次实验都是在学校实验室的实验箱上完成,做完这两次试验后,我自己购买了FPGA开发板,后面的实验都是在这块板子上完成。学校的实验箱中unuesd pins是接地的,我的板子unuesd pins则是接高电平。
实验要求
1.采用verilog HDL设计8421BCD码十进制计数器并生成元件符号
2.采用verilog HDL设计七段译码器并生成元件符号
3.采用verilog HDL设计分频器并生成元件符号
4.建立顶层原理图文件
思路与代码
1.分频器的设计
板子上自带的时钟是50MHz,需要将50MHz分频为1Hz
module fp219(clk,a);
input clk;
output reg a;
reg[25:0] q;
always@(posedge clk)
begin
if(q==24999999)
begin
q<=0;
a<=~a;
end
else
q<=q+1;
end
endmodule
2.计数器的设计
module jishu219(CLK,RST,Q);
input CLK,RST;
output[3:0] Q;
reg[3:0] Q;
always@(posedge CLK or negedge RST)
begin
if(!RST)
Q<=4'd0000;
else if(Q==4'd1001)
Q<=4'd0000;
else
Q<=Q+1'b1;
end
endmodule
3.七段译码器的设计
module ym219(A,B,LED7S);
input[3:0] A;
output B;
output[6:0] LED7S;
reg[6:0] LED7S;
assign B=1'b0;
always @(A)
case(A)
4'b0000 : LED7S <= 7'b1000000; //0
4'b0001 : LED7S <= 7'b1111001; //1
4'b0010 : LED7S <= 7'b0100100; //2
4'b0011 : LED7S <= 7'b0110000; //3
4'b0100 : LED7S <= 7'b0011001; //4
4'b0101 : LED7S <= 7'b0010010; //5
4'b0110 : LED7S <= 7'b0000010; //6
4'b0111 : LED7S <= 7'b1111000; //7
4'b1000 : LED7S <= 7'b0000000; //8
4'b1001 : LED7S <= 7'b0010000; //9
endcase
endmodule
4.顶层原理图
实验现象:数码管会一直从0到9计数,每1秒钟计数一次