久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 6281|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

EDA設(shè)計(jì)數(shù)字頻率計(jì)(Verilog源程序)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
最近在做數(shù)電研究,題目為數(shù)字頻率計(jì),要求用FPGA板子設(shè)計(jì),為了能使51黑電子論壇能發(fā)展的更好,我也貢獻(xiàn)我的一份力量,希望能幫到各位。

原理:測(cè)量1s時(shí)間內(nèi)待測(cè)脈沖個(gè)數(shù)從而得出待測(cè)信號(hào)的頻率。
具體模塊:
基準(zhǔn)信號(hào)產(chǎn)生模塊:把50MHz分頻成1Hz

控制模塊:產(chǎn)生計(jì)數(shù)使能信號(hào);產(chǎn)生清零信號(hào);
計(jì)數(shù)模塊:通過從控制模塊輸入進(jìn)來(lái)的使能信號(hào)和清零信號(hào)能從0000~1001計(jì)數(shù)(8421碼),并能產(chǎn)生進(jìn)位;
鎖存模塊:把計(jì)數(shù)結(jié)果鎖存;使顯示模塊能穩(wěn)定顯示結(jié)果
顯示模塊:通過數(shù)碼管顯示,位選是用的外部電路138譯碼器,段選是一個(gè)四位二進(jìn)制碼(8421碼)
待測(cè)信號(hào):由于本人沒有函數(shù)信號(hào)發(fā)生器所以就把50MHz分成900Hz作為待測(cè)信號(hào)來(lái)驗(yàn)證該系統(tǒng)能否正確測(cè)量,也可以把該模塊刪掉,把輸出口接一個(gè)input,就可以測(cè)量外部信號(hào)了,

由于板子資源有限,而我的程序有點(diǎn)復(fù)雜,不是很簡(jiǎn)潔,所以只能顯示四位結(jié)果,即量程為0~9999Hz。板子上有8位數(shù)碼管,理論上可以顯示8位結(jié)果,即量程為0~99999999Hz。另外我準(zhǔn)備用modelsim仿真各個(gè)模塊,在我仿真完控制模塊后遇到了問題,其他幾個(gè)模塊仿真不出來(lái),只有控制模塊可以仿真,其他幾個(gè)寫了激勵(lì)信號(hào),而且都賦了初值,但是輸出結(jié)果一直是高阻態(tài)(顯示紅線),希望各位朋友能教教我(本人不怎么會(huì)用modelsim)

源程序:
  1. //控制模塊
  2. module fre_ctrl(clk,rst,count_en,count_clr,load);
  3. input clk,rst;
  4. output count_en,count_clr,load;
  5. reg count_en=0;
  6. reg load=0;
  7. always@(posedge clk)
  8.         begin if(rst)begin count_en<=0;load<=1;end
  9.         else begin count_en<=~count_en;
  10.                                 load<=count_en;
  11.                   end
  12.         end
  13.         assign count_clr=(~clk)&load;
  14.         endmodule


  15. //計(jì)數(shù)模塊
  16. module count10(out,cout,en,clr,clk);
  17. input en,clr,clk;
  18. output[3:0] out;
  19. output cout;
  20. reg[3:0] out;
  21. always @(negedge clk or posedge clr)
  22. begin if(clr) out<=0;//計(jì)數(shù)清零
  23. else if(en)
  24. begin if(out==9)
  25.                 out=0;
  26. else out<=out+1;//計(jì)數(shù)
  27. end
  28. end
  29. assign cout=((out==9)&en)?1:0;
  30. endmodule

  31. //鎖存模塊
  32. module latch_16(qo,din,load);
  33. input load;
  34. input[15:0] din;
  35. output [15:0] qo;
  36. reg[15:0] qo;
  37. always @(posedge load)
  38. begin qo=din;end
  39. endmodule

  40. //1Hz基準(zhǔn)信號(hào)產(chǎn)生模塊(該模塊是我在網(wǎng)上找的,可以把50MHz分成任意小于50M的頻率)
  41. module div_N(
  42. input CLK,// 基準(zhǔn)時(shí)鐘
  43. output CLK_div_N// N分頻后得到的時(shí)鐘
  44. );
  45. wire[31:0]N=50000000;// N為分頻系數(shù),N≥2即可,N的值為CLK除以CLK_div_N后取整(四舍五入)
  46. /******************** 產(chǎn)生備用時(shí)鐘1 ***************/
  47. reg[31:0]cnt1;
  48. reg CLK_div_N_1;
  49. always @ (posedge CLK)
  50. begin
  51. if(N%2==0)// 如果N為偶數(shù)
  52. begin
  53. if(N==2)// 如果N為2
  54. CLK_div_N_1 <= ~CLK_div_N_1;
  55. else
  56. begin
  57. if(cnt1==(N-2)/2)
  58. begin
  59. cnt1 <= 0;
  60. CLK_div_N_1 <= ~CLK_div_N_1;
  61. end
  62. else
  63. cnt1 <= cnt1+1;
  64. end
  65. end
  66. else// 如果N為奇數(shù)
  67. begin
  68. if(cnt1==N-1)
  69. cnt1 <= 0;
  70. else
  71. cnt1 <= cnt1+1;
  72. if((cnt1==N-1) || (cnt1==(N-1)/2))
  73. CLK_div_N_1 <= ~CLK_div_N_1;
  74. else ;
  75. end
  76. end
  77. /*********************** 產(chǎn)生備用時(shí)鐘2 *********************/
  78. wire CLK0=(N%2)? (~CLK):0;// 如果N為偶數(shù),備用時(shí)鐘2(CLK_div_N_2)恒為0,即不需要用到此備用時(shí)鐘
  79. reg[31:0]cnt2;
  80. reg CLK_div_N_2;
  81. always @ (posedge CLK0)
  82. begin
  83. if(cnt2==N-1)
  84. cnt2 <= 0;
  85. else
  86. cnt2 <= cnt2+1;
  87. if((cnt2==N-1) || (cnt2==(N-1)/2))
  88. CLK_div_N_2 <= ~CLK_div_N_2;
  89. end
  90. /******************** 產(chǎn)生最終分頻時(shí)鐘************************/
  91. assign CLK_div_N = CLK_div_N_1 | CLK_div_N_2;
  92. endmodule

  93. //待測(cè)信號(hào)(本人設(shè)置的輸出900Hz)
  94. module square(nrst,clk_in,clk_out);
  95. input wire nrst;
  96. input wire clk_in;
  97. output reg clk_out;
  98. reg [18:0]r_cnt;

  99. always @(posedge clk_in)
  100. if(nrst)
  101. begin
  102. if(r_cnt < 19'd27776)
  103. r_cnt <= r_cnt+1'b1;
  104. else begin
  105. r_cnt <= 19'b0;
  106. clk_out <= ~clk_out;
  107. end
  108. end
  109. else begin
  110. r_cnt <= 19'b0;
  111. clk_out <= 1'b0;
  112. end
  113. endmodule

  114. //數(shù)碼管顯示模塊
  115. module SMG(qo,clk,rst,se,sel);
  116. input wire clk,rst;
  117. input[15:0]qo;
  118. output reg [7:0]se;
  119. output reg [2:0]sel;
  120. reg [3:0]ge;
  121. reg [3:0]shi;
  122. reg [3:0]bai;
  123. reg [3:0]qian;
  124. reg [7:0]b;
  125. reg c;
  126. reg [25:0]q;
  127. reg [3:0]a;
  128. always@(posedge clk or negedge rst)
  129. begin

  130. if(rst==0)
  131. begin
  132. q<=0;
  133. c<=0;
  134. end
  135. else if(q==139999)
  136. begin
  137. q<=0;
  138. c<=~c;
  139. end
  140. else
  141. q<=q+1;
  142. end

  143. always@(posedge c)
  144. begin
  145.     if(a==3)
  146.     a<=0;
  147.     else
  148.     a<=a+1;
  149. end

  150. always@(*)
  151. begin
  152. case(a)
  153. 0:begin
  154. sel=3'b011;
  155. qian={qo[15],qo[14],qo[13],qo[12]};b=ge;
  156. end
  157. 1:begin
  158. sel=3'b010;
  159. bai={qo[11],qo[10],qo[9],qo[8]};b=shi;
  160. end
  161. 2:begin
  162. sel=3'b001;
  163. shi={qo[7],qo[6],qo[5],qo[4]};b=bai;
  164. end
  165. 3:begin
  166. sel=3'b000;
  167. ge={qo[3],qo[2],qo[1],qo[0]};b=qian;
  168. end
  169. default sel=3'b011;
  170. endcase
  171. end

  172. always@(posedge clk)
  173. begin
  174. case(b)
  175. 4'b0000:se=8'b0011_1111;//0
  176. 4'b0001:se=8'b0000_0110;//1
  177. 4'b0010:se=8'b0101_1011;//2
  178. 4'b0011:se=8'b0100_1111;//3
  179. 4'b0100:se=8'b0110_0110;//4
  180. 4'b0101:se=8'b0110_1101;//5
  181. 4'b0110:se=8'b0111_1101;//6
  182. 4'b0111:se=8'b0000_0111;//7
  183. 4'b1000:se=8'b0111_1111;//8
  184. 4'b1001:se=8'b0110_1111;//9
  185. endcase
  186. end

  187. endmodule
復(fù)制代碼

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1045091 發(fā)表于 2022-9-18 13:11 | 只看該作者
有測(cè)試文件嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久国产一区二区三区 | 久久精品国产一区二区电影 | 国产精品久久久久久 | 蜜桃av鲁一鲁一鲁一鲁 | 97免费视频在线观看 | 国产一区2区 | 成人在线中文字幕 | 欧美成人a∨高清免费观看 老司机午夜性大片 | 国产一级片在线播放 | 国产免费一二三区 | 一区二区三区四区在线视频 | 97色在线视频 | 日韩在线一区二区三区 | 国产精品视频一二三 | 欧美日韩成人网 | 欧美中文字幕在线 | 金莲网 | 国产一伦一伦一伦 | 婷婷精品 | 精品一区二区三区入口 | 亚洲精品成人网 | 337p日本欧洲亚洲大胆鲁鲁 | 国产黄视频在线播放 | 中文字幕一区二区三区四区五区 | 成人久久久 | 黄色网址在线免费观看 | 极情综合网 | 国产精品久久久久久久久动漫 | 日本a视频| 日韩视频精品 | 亚洲第一女人av | 日韩成人精品视频 | 国产一区二区自拍 | 久久精品久久久 | 欧美xxxx日本 | 国产成人91| 中文字幕1区2区3区 日韩在线视频免费观看 | 欧美一区二区三区的 | 中文字幕在线免费视频 | 久久人人网 | 国产精品国产三级国产aⅴ中文 |