永发信息网

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

答案:2  悬赏:20  手机版
解决时间 2021-02-05 08:54
要求:1、设计一个数字频率计,闸门时间为1秒,最高可测频率为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
全部回答
等精度频率计,最高测到50mhz.但精度不高,结果送到数码管上显示.我不明白led怎么显示,谁也没时间现给你做一个你的要求,自己改吧.尽力了
module pinlvji(clk,clk_test,rst,out_wei,out_duan);
 input clk,rst;
 output [1:0]out_wei;
 output [7:0]out_duan;
 output clk_test;
 reg [1:0]out_wei;
 reg [7:0]out_duan=8'b00000011; //a b c d e f g dp
 reg clk_test=0; // ce shi xin hao
 reg [1:0] count1=2'b00;
 reg [24:0] count2=0;
 reg [18:0] count3=0;
 reg [5:0] show; //largest 50m
 reg [3:0] shi;
 reg [3:0] ge;
 reg flag=0; //yes or not get to one second
 reg [19:0] saomiao;
 reg [7:0] h;
 reg [7:0] l;

 always@(posedge clk) begin //creat a test signal 'clk_test'
 if(count1==2'b11) begin // 50/8m
 count1<=2'b00;
 clk_test<=~clk_test;
 end else 
 count1<=count1+1;
 end

 always@(posedge clk or negedge rst) begin //wait for 1 second ,then flag=1
 if(!rst) 
 count2<=0;
 else begin 
 if(!flag) 
 count2<=count2+1;
 if(count2==25000000) begin // 1 second
 flag<=1; 
 end
 end
 end

 always@(posedge clk_test or negedge rst) begin //ji shu qi (1)
 if(!rst) 
 count3<=0;
 else if(!flag) begin
 count3<=count3+1; 
 if(count3==500000) begin //1m
 count3<=0; 
 show<=show+1;
 end
 end
 end

 always@(posedge clk) begin //scan
 saomiao<=saomiao+1'b1; 
 if(!rst) begin
 case(saomiao)
 1 :begin 
 out_wei<=2'b10;
 out_duan<=8'b00000011; //0
 end
 300000:begin
 out_wei<=2'b01;
 out_duan<=8'b00000011; //0
 end 
 600000:saomiao<=0;
 endcase
 end
 else begin
 case(saomiao)
 1 :begin 
 out_wei<=2'b10;
 if(flag) out_duan<=l;
 end
 300000:begin
 out_wei<=2'b01;
 if(flag) out_duan<=h; 
 end 
 600000:saomiao<=0;
 endcase
 end
 end 

 always@(posedge clk) begin
 case(shi) 
 0:h=8'b00000011;
 1:h=8'b100
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
藏头诗 君君我爱你
舒城县六安城关镇财政服务大厅怎么去啊,谁知
中国人民银行宁海县支行在什么地方啊,我要过
苏州到常熟有多远
青春期情绪的控制作文
鑫苑名家这个地址在什么地方,我要处理点事
吟坛的意思是什么啊?知道的请说下!
我买了两点个防火涂料桶洗净能盛水吃吗?
杭州制氧机氧气机,哪个牌子的最好,地址在哪
请问下湖北十堰谁有家养狗下的金毛幼崽啊。?
多年用地源热泵地基会下沉吗?
美图手机充电为什那么慢
白山市江源区农业局怎么去啊,有知道地址的么
电脑关机后华硕gtx960显卡pin口附近的灯一直
以下有关药学服务的目的叙述中,正确的是A.提
推荐资讯
双双美甲地址在哪,我要去那里办事
浙江稠州商业银行(景宁支行)地址在什么地方,
谁能告诉我COCO奶茶的原料和奶茶制作的配比
vr眼镜最新是几代,,,,,,
现在的房间不想要榻榻米了,想换个房间可以吗
【我的晋察冀】日寇大举进犯我晋察冀根据地.
为什么骚猪好久没直播了
台湾发育宝天然活力繁殖配方好吗是天然猫粮吗
我的腹肌不对称啊怎么办。。从上到下第一对右
一台机器发出声音的声压级为70dB,如果10台机
嚅嗫的意思是什么啊?知道的请说下!
怡荷园在什么地方啊,我要过去处理事情
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?