你们好,最近小活发现有诸多的小伙伴们对于数字频率计的设计论文,数字频率计的设计这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、 moduletest(clk,rst_n,fre,duan,dig,clk_1ms);
2、 inputclk,rst_n,fre;
3、 output[6:0]duan;
4、 output[3:0]dig;
5、 outputclk_1ms;
6、 reg[12:0]fre_out;
7、 wirefre;
8、 reg[31:0]cnt1;
9、 reg[31:0]cnt2;
10、 regclk_1s;
11、 //声明使用的输入、输出端口和变量。
12、 /*********************0.5hz clock************************************/
13、 always@(posedgeclkornegedgerst_n)begin
14、 if(!rst_n)begin
15、 cnt1=0;
16、 clk_1s=0;
17、 end
18、 elseif(cnt1==32'd50000000)begin
19、 cnt1=0;
20、 clk_1s=~clk_1s;
21、 end
22、 else
23、 cnt1=cnt1+1;
24、 end
25、 //分频得到周期为2s的时钟进行计数。
26、 /**********************2sclockregister************************/
27、 regclk_1s_temp;
28、 always@(posedgeclkornegedgerst_n)begin
29、 if(!rst_n)begin
30、 clk_1s_temp=0;
31、 end
32、 else
33、 clk_1s_temp=clk_1s;
34、 end
35、 /***********************2sclockregister************************/
36、 regclk_1s_temp2;
37、 always@(posedgeclkornegedgerst_n)begin
38、 if(!rst_n)
39、 clk_1s_temp2=0;
40、 else
41、 clk_1s_temp2=clk_1s_temp;
42、 end
43、 //2s时钟寄存器,用于判断上升沿还是下降沿。
44、 /***********************inputsignalregister********************/
45、 regfre_temp;
46、 always@(posedgeclkornegedgerst_n)begin
47、 if(!rst_n)
48、 fre_temp=0;
49、 else
50、 fre_temp=fre;
51、 end
52、 /***********************inputsignalregister*******************/
53、 regfre_temp2;
54、 always@(posedgeclkornegedgerst_n)begin
55、 if(!rst_n)
56、 fre_temp2=0;
57、 else
58、 fre_temp2=fre_temp;
59、 end
60、 //输入信号寄存器,用于判断输入信号的上升沿。
61、 /***********************counter*******************/
62、 always@(posedgeclkornegedgerst_n)begin
63、 if(!rst_n)
64、 cnt2=0;
65、 else if((~ clk _ 1s _ temp)(clk _ 1s _ temp 2))//当时钟_1s有下降沿,cnt2归0
66、 cnt2=0;
67、 Elseif (~ fre _ temp) (fre _ temp2) clk _ 1s)//When the input signal multiplier has a rising edge,
68、 CNT 2=CNT 2 1;clk _ 1s信号的值为1,1的值,cnt2加1。
69、 end
70、 //计数器
71、 /****************passcnt2tofre_out****************/
72、 always@(posedgeclkornegedgerst_n)begin
73、 if(!rst_n)
74、 fre_out=0;
75、 elseif((~clk_1s)(clk_1s_temp))//negativeedgepassvalue
76、 fre_out=cnt2;
77、 end
78、 //将cnt2的值传递给fre_out。
79、 /****************1msclock****************/
80、 reg[31:0]cnt;
81、 regclk_1ms;
82、 always@(posedgeclkornegedgerst_n)begin
83、 if(!rst_n)
84、 cnt=0;
85、 elseif(cnt==17'd100000)begin//250hz
86、 cnt=0;
87、 clk_1ms=~clk_1ms;
88、 end
89、 elsecnt=cnt+1;
90、 end
91、 //1ms时钟用于数码管显示模块。
92、 /****************Digitaltubedisplaysection****************/
93、 reg[3:0]dig;
94、 reg[6:0]duan;
95、 wire[3:0]thou,hun,ten,one;
96、 assignthou=(fre_out/1000)%10;
97、 assignhun=(fre_out/100)%10;
98、 assignten=(fre_out/10)%10;
99、 assignone=(fre_out)%10;
100、 always@(posedgeclk_1msornegedgerst_n)begin
101、 if(!rst_n)begin
102、 dig=4'b1110;
103、 end
104、 else
105、 dig={dig[0],dig[3:1]};
106、 end
107、 always@(posedgeclk_1ms)begin
108、 if(!rst_n)begin
109、 duan=7'b1111111;
110、 end
111、 elsebegin
112、 case(dig)
113、 4'b0111:begin case(hun)
114、 4'd0:duan=7'b1000000;
115、 4'd1:duan=7'b1111001;
116、 4'd2:duan=7'b0100100;
117、 4'd3:duan=7'b0110000;
118、 4'd4:duan=7'b0011001;
119、 4'd5:duan=7'b0010010;
120、 4'd6:duan=7'b0000010;
121、 4'd7:duan=7'b1111000;
122、 4'd8:duan=7'b0000000;
123、 4'd9:duan=7'b0010000;
124、 default:
125、 endcase
126、 end
127、 4'b1011:begin
128、 case(ten)
129、 4'd0:duan=7'b1000000;
130、 4'd1:duan=7'b1111001;
131、 4'd2:duan=7'b0100100;
132、 4'd3:duan=7'b0110000;
133、 4'd4:duan=7'b0011001;
134、 4'd5:duan=7'b0010010;
135、 4'd6:duan=7'b0000010;
136、 4'd7:duan=7'b1111000;
137、 4'd8:duan=7'b0000000;
138、 4'd9:duan=7'b0010000;
139、 default:
140、 endcase
141、 end
142、 4'b1101:begin
143、 case(one)
144、 4'd0:duan=7'b1000000;
145、 4'd1:duan=7'b1111001;
146、 4'd2:duan=7'b0100100;
147、 4'd3:duan=7'b0110000;
148、 4'd4:duan=7'b0011001;
149、 4'd5:duan=7'b0010010;
150、 4'd6:duan=7'b0000010;
151、 4'd7:duan=7'b1111000;
152、 4'd8:duan=7'b0000000;
153、 4'd9:duan=7'b0010000;
154、 default:
155、 endcase
156、 end
157、 4'b1110:begin
158、 case(thou)
159、 4'd0:duan=7'b1000000;
160、 4'd1:duan=7'b1111001;
161、 4'd2:duan=7'b0100100;
162、 4'd3:duan=7'b0110000;
163、 4'd4:duan=7'b0011001;
164、 4'd5:duan=7'b0010010;
165、 4'd6:duan=7'b0000010;
166、 4'd7:duan=7'b1111000;
167、 4'd8:duan=7'b0000000;
168、 4'd9:duan=7'b0010000;
169、 default:
170、 endcase
171、 end
172、 default:duan=7'b0000000;
173、 endcase
174、 end
175、 end
176、 endmodule
以上就是数字频率计的设计这篇文章的一些介绍,希望对大家有所帮助。
标签:
免责声明:本文由用户上传,如有侵权请联系删除!