仪器社区

简易数字频率计 verilog语言设计

奢侈地走下去 2014-06-30
要求:1、设计一个数字频率计,闸门时间为1秒,Z高可测频率为100Mhz. 2、频率由8位数码管显示输出。
评论
全部评论
查水表的路过
假设 秒时间高电平为1秒钟。
参考代码如下,
module button( clk, rst, pp1s, disp);
input rst,clk;
input pp1s; //秒时钟基准
output reg [7:0] disp[8:0]; //9个10进制数码管显示。
reg reg [3:0] cnt[8:0]; //9个十进制。
always@(posedge clk_dut or negedge rst)
if(!rst)
begin cnt[0] <= 3'b0; cnt[1] <= 3'b0; ...... cnt[8] <= 3'b0; end
else if (!pp1s)
begin cnt[0] <= 3'b0; cnt[1] <= 3'b0; ...... cnt[8] <= 3'b0; end
else
begin
if (cnt[0] >= 4'h9) cnt[0] <= 4'b0; else cnt[0] <= cnt[0] + 1'b1;
if (cnt[0] >= 4'b9)
begin
if (cnt[1] >= 4'h9) cnt[1] <= 4'b0; else cnt[1] <= cnt[1] + 1'b1;
end
if (cnt[0] >= 4'b9 && cnt[1] >= 4'b9)
begin
if (cnt[2] >= 4'h9) cnt[2] <= 4'b0; else cnt[2] <= cnt[2] + 1'b1;
end
.....
if (cnt[0] >= 4'b9 && cnt[1] >= 4'b9 && cnt[2] >= 4'b9 && cnt[3] >= 4'b9 && cnt[4] >= 4'b9 && cnt[5] >= 4'b9 && cnt[6] >= 4'b9 && cnt[7] >= 4'b9)
begin
if (cnt[8] >= 4'h9) cnt[8] <= 4'b0; else cnt[8] <= cnt[8] + 1'b1;
end
end
//数码管编码
always@(*)
case (cnt[0])
4'h0 disp[0] = 0x3f;
4'h1 disp[0] = 0x06;
4'h2 disp[0] = 0x5b;
4'h3 disp[0] = 0x4f;
4'h4 disp[0] = 0x66;
4'h5 disp[0] = 0x6d;
4'h6 disp[0] = 0x7d;
4'h7 disp[0] = 0x07;
4'h8 disp[0] = 0x7f;
4'h9 disp[0] = 0x6f;
default:disp[0] = 0x3f;
endcase

always@(*)
case (cnt[8])
4'h0 disp[8] = 0x3f;
4'h1 disp[8] = 0x06;
4'h2 disp[8] = 0x5b;
4'h3 disp[8] = 0x4f;
4'h4 disp[8] = 0x66;
4'h5 disp[8] = 0x6d;
4'h6 disp[8] = 0x7d;
4'h7 disp[8] = 0x07;
4'h8 disp[8] = 0x7f;
4'h9 disp[8] = 0x6f;
default:disp[8] = 0x3f;
endcase
endmodule
7 0 2014-07-01 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论