找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

FPGA采集模擬信號數(shù)據(jù)波形,51單片機(jī)顯示波形

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
fpga采集數(shù)據(jù)波形,51單片機(jī)顯示波形,示波器


單片機(jī)源程序如下(frqent_count.v):
  1. /*==============================================
  2. *        描    述:頻率計(jì)控制模塊計(jì)數(shù)測試程序
  3. //==============================================*/

  4. module frqent_count(clk_b,clk_d,vavle,rst,cnt_h_out,cnt_b_out,cnt_d_out);
  5.         input rst;
  6.         input clk_b;                         
  7.         input clk_d;
  8.        
  9.         input vavle;
  10.        
  11.         output reg[31:0]     cnt_h_out;                                         //用于測量高脈寬
  12.         output reg[31:0]     cnt_b_out;                                                //標(biāo)準(zhǔn)頻率計(jì)數(shù)
  13.         output reg[31:0]         cnt_d_out;                                                //待測頻率計(jì)數(shù)
  14.        
  15.         reg        [31:0]        cnt_h;                                                                        //用于測量高脈寬       
  16.         reg        [31:0]        cnt_b;                                                                        //標(biāo)準(zhǔn)頻率計(jì)數(shù)
  17.         reg        [31:0]        cnt_d;                                                                        //待測頻率計(jì)數(shù)
  18.        
  19.         reg        start_reg;                                                                                //開始信號緩存
  20.         reg        clk_d_reg;                                                                                //待測時(shí)鐘緩存
  21.        
  22.         wire start;
  23.        
  24.         /*------------------------------------------------
  25.         *        模塊說明:計(jì)數(shù)允許模塊
  26.         *        備          注:Start_l對于頻率沒有作用,只對于低電平
  27.                                  脈寬計(jì)數(shù)有作用,頻率主要作用在Start
  28.         *-------------------------------------------------*/
  29.        
  30.         assign start = vavle;
  31.        
  32.        
  33.         //開始信號緩存
  34.         always@(posedge clk_b,negedge rst)
  35.         begin
  36.                 if(!rst)
  37.                 begin
  38.                         start_reg <= 1'b0;
  39.                 end
  40.                
  41.                 else
  42.                 begin
  43.                         start_reg <= start;
  44.                 end
  45.         end
  46.        
  47.         //待測信號緩存
  48.         always@(posedge clk_b, negedge rst)
  49.         begin
  50.                 if(!rst)
  51.                 begin
  52.                         clk_d_reg <= 1'b0;
  53.                 end
  54.                
  55.                 else
  56.                 begin
  57.                         clk_d_reg <= clk_d;
  58.                 end
  59.         end
  60.        
  61.         //待測時(shí)鐘進(jìn)行計(jì)數(shù)
  62.         always@(posedge clk_d,negedge rst)
  63.         begin
  64.                 if(!rst)
  65.                 begin
  66.                         cnt_d <= 32'b0;
  67.                 end
  68.                
  69.                 else
  70.                 begin
  71.                         if(start == 0)
  72.                                 begin
  73.                                         cnt_d <= 0;
  74.                                 end
  75.                         // 高電平觸發(fā)
  76.                         else
  77.                                 begin
  78.                                         cnt_d <= cnt_d + 1'b1;
  79.                                 end
  80.                 end
  81.         end
  82.        
  83.         //標(biāo)準(zhǔn)時(shí)鐘進(jìn)行計(jì)數(shù)
  84.         always@(posedge clk_b,negedge rst)
  85.         begin
  86.                 if(!rst)
  87.                 begin
  88.                         cnt_b <= 0;
  89.                 end
  90.                
  91.                 else
  92.                 begin
  93.                         if(start == 0)
  94.                                 begin
  95.                                         cnt_b <= 0;
  96.                                 end
  97.                                
  98.                         else
  99.                                 begin
  100.                                         cnt_b <= cnt_b + 1'b1;
  101.                                 end
  102.                 end
  103.         end
  104.        
  105.         //高電平計(jì)數(shù)
  106.         always@(posedge clk_b, negedge rst)
  107.         begin
  108.                 if(!rst)
  109.                 begin
  110.                         cnt_h <= 0;
  111.                 end
  112.                
  113.                 else
  114.                         begin
  115.                                 if(clk_d == 0)
  116.                                 begin
  117.                                         cnt_h <= 0;
  118.                                 end
  119.                                
  120.                                 else
  121.                                 begin
  122.                                         cnt_h <= cnt_h + 1'b1;
  123.                                 end
  124.                         end
  125.         end
  126.        
  127.         //標(biāo)準(zhǔn)計(jì)數(shù)和待測計(jì)數(shù)輸出
  128.         always@(posedge clk_b, negedge rst)
  129.         begin
  130.                 if(!rst)
  131.                 begin
  132.                         cnt_b_out <= 0;
  133.                         cnt_b_out <= 0;
  134.                 end
  135.                
  136.                 else
  137.                 begin
  138.                         if(start_reg && !start)
  139.                         begin
  140.                                 cnt_b_out <= cnt_b;
  141.                                 cnt_d_out <= cnt_d;
  142.                         end
  143.                        
  144.                         else
  145.                         begin
  146.                                 cnt_b_out <= cnt_b_out;
  147.                                 cnt_d_out <= cnt_d_out;
  148.                         end
  149.                 end
  150.         end
  151.        
  152.         //高電平計(jì)數(shù)輸出
  153.         always@(posedge clk_b,negedge rst)
  154.         begin       
  155.                 if(!rst)
  156.                 begin
  157.                         cnt_h_out<=0;
  158.                 end
  159.                
  160.                 else
  161.                 begin
  162.                         if(clk_d_reg&&!clk_d)
  163.                         begin
  164.                                 cnt_h_out<=cnt_h;
  165.                         end
  166.                        
  167.                         else
  168.                         begin
  169.                                 cnt_h_out<=cnt_h_out;
  170.                         end
  171.                 end
  172.         end
  173.        
  174. endmodule        
  175.                
復(fù)制代碼

所有資料51hei提供下載:
采集模擬信號.rar (2.39 MB, 下載次數(shù): 51)


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

使用道具 舉報(bào)

沙發(fā)
ID:326615 發(fā)表于 2018-5-10 10:44 | 只看該作者
有用,就是黑幣太高了
回復(fù)

使用道具 舉報(bào)

板凳
ID:326615 發(fā)表于 2018-5-10 10:45 | 只看該作者
學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

地板
ID:229939 發(fā)表于 2018-8-6 00:45 | 只看該作者
謝謝。。。。。。。。。。。。
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表