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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4631|回復: 3
收起左側

FPGA采集模擬信號數據波形,51單片機顯示波形

[復制鏈接]
ID:250852 發表于 2018-4-1 13:37 | 顯示全部樓層 |閱讀模式
fpga采集數據波形,51單片機顯示波形,示波器
0.jpg

單片機源程序如下(frqent_count.v):
  1. /*==============================================
  2. *        描    述:頻率計控制模塊計數測試程序
  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;                                                //標準頻率計數
  13.         output reg[31:0]         cnt_d_out;                                                //待測頻率計數
  14.        
  15.         reg        [31:0]        cnt_h;                                                                        //用于測量高脈寬       
  16.         reg        [31:0]        cnt_b;                                                                        //標準頻率計數
  17.         reg        [31:0]        cnt_d;                                                                        //待測頻率計數
  18.        
  19.         reg        start_reg;                                                                                //開始信號緩存
  20.         reg        clk_d_reg;                                                                                //待測時鐘緩存
  21.        
  22.         wire start;
  23.        
  24.         /*------------------------------------------------
  25.         *        模塊說明:計數允許模塊
  26.         *        備          注:Start_l對于頻率沒有作用,只對于低電平
  27.                                  脈寬計數有作用,頻率主要作用在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.         //待測時鐘進行計數
  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.                         // 高電平觸發
  76.                         else
  77.                                 begin
  78.                                         cnt_d <= cnt_d + 1'b1;
  79.                                 end
  80.                 end
  81.         end
  82.        
  83.         //標準時鐘進行計數
  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.         //高電平計數
  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.         //標準計數和待測計數輸出
  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.         //高電平計數輸出
  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.                
復制代碼

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


回復

使用道具 舉報

ID:326615 發表于 2018-5-10 10:44 | 顯示全部樓層
有用,就是黑幣太高了
回復

使用道具 舉報

ID:326615 發表于 2018-5-10 10:45 | 顯示全部樓層
學習學習
回復

使用道具 舉報

ID:229939 發表于 2018-8-6 00:45 | 顯示全部樓層
謝謝。。。。。。。。。。。。
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲最大av网站 | 亚洲九九精品 | 日韩精品一区二区三区中文在线 | 久久蜜桃资源一区二区老牛 | 中文字幕成人 | 精品在线一区二区三区 | 自拍 亚洲 欧美 老师 丝袜 | 日本粉嫩一区二区三区视频 | 精品国产一区二区三区av片 | 免费99视频 | 精品国产一区二区久久 | 亚洲高清三级 | 亚洲视频中文字幕 | 国产一区二区视频在线观看 | 在线欧美一区 | 成人国产精品久久久 | 天天看天天摸天天操 | 一区二区成人 | 黄色在线播放视频 | 国产精品国产三级国产aⅴ中文 | 国精产品一区二区三区 | av手机在线 | 日本成人中文字幕 | 天天操天天插天天干 | 欧美 中文字幕 | 久久精品二区亚洲w码 | 久久久高清 | 亚洲一区二区三区在线观看免费 | 日本久久www成人免 成人久久久久 | 亚洲精品99999| 国产综合久久 | 久久国产精品视频观看 | 欧美色综合一区二区三区 | 欧美日本韩国一区二区 | 欧美日韩一区二区三区视频 | 亚洲精品高清视频 | 国产成人一区二区三区精 | 成人精品免费视频 | 91久色 | 真人毛片 | 亚洲精品专区 |