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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12947|回復: 7
收起左側(cè)

FPGA信號發(fā)生器設計 含程序原理圖PCB 可產(chǎn)生正弦波 三角波 方波 幅度頻率控制

  [復制鏈接]
ID:201155 發(fā)表于 2017-5-15 22:45 | 顯示全部樓層 |閱讀模式
FPGA信號發(fā)生器的頂層實體圖如下:
0.png
上圖為FPGA信號發(fā)生器頂層實體電路圖,其中包括,矩陣鍵盤模塊、頻率主控制模塊、相位累加器模塊、LCD1602顯示器模塊、波形數(shù)據(jù)存儲模塊ROM、信號選擇器模塊、幅度調(diào)制模塊、頻率調(diào)制模塊。以上每個模塊都是由程序模塊生成。下面對各個模塊的功能和程序進行介紹.vhdl和veriligHDL程序都有.可產(chǎn)生正弦波 三角波 方波

keynum[0]按下切換4個波形輸出.JPG 方波仿真輸出.jpg 幅度控制.jpg 鋸齒波.png 三角波仿真輸出.jpg 三種波形的仿真輸出.jpg 正弦波仿真輸出.jpg 正弦波頻率可調(diào),KEYNUM3加,KEYNUM2減,.jpg 正弦波頻率可調(diào).jpg

Altium Designer畫的FPGA信號發(fā)生器原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.png 0.png

verilog源程序如下:
  1. module control(CLK,reset,//時鐘和復位
  2.                                 keynum,//按鍵值輸入
  3.                                 freq_data,//頻率控制字輸出
  4.                                 vol_ctrl,//電壓輸出
  5.                                 show_vol_ctrl,//顯示電壓輸出
  6.                                 WAVE_MODE,//波形選擇輸出
  7.                                 show_freq//頻率顯示
  8.                                 );
  9. input CLK,reset; //

  10. input [3:0]keynum;
  11. output[7:0]show_vol_ctrl,vol_ctrl;
  12. output [31:0]freq_data;
  13. output [2:0]WAVE_MODE;
  14. output [27:0]show_freq;
  15. reg [31:0]freq_data;
  16. reg [27:0]show_freq;
  17. reg [31:0]fre_reg;  //INIT
  18. reg [2:0]WAVE_MODE=3'b000;
  19. reg[7:0]show_vol_ctrl,vol_ctrl;
  20. reg[2:0]cnt;
  21. reg keyup_flag;
  22. reg [2:0]state=3'b000;//狀態(tài)控制
  23. reg[7:0]vol_ctrl_reg;
  24. always @(posedge CLK or negedge reset )//控制進程
  25. begin
  26.    if(!reset) begin
  27.       fre_reg<=32'h00000000;
  28.       vol_ctrl<=3'b000;//幅度控制
  29.       show_freq=27'h0002000;//復位后顯示2000HZ
  30.       keyup_flag =1'b0; //按鍵按下標志
  31.       state<=3'b000;//默認進入狀態(tài)轉(zhuǎn)換控制狀態(tài)
  32.       WAVE_MODE=3'b000;
  33.       freq_data<= 32'h00029f18;//默認輸出2000HZ--1718->20hz,20 000->1718*1000=1718000=x"001a36f0"  --29f18=2000
  34.       vol_ctrl<=68;//幅度控制
  35.       vol_ctrl_reg<=8'h68;
  36.       show_vol_ctrl<=8'h68;
  37.     end
  38.    else  begin
  39.      case (state)
  40.         3'b000: begin//狀態(tài) 0
  41.                   fre_reg<=32'h00000000;
  42.                   vol_ctrl<=3'b000;//幅度控制
  43.                   show_freq=27'h0002000;//復位后顯示2000HZ
  44.                   keyup_flag =1'b0; //按鍵按下標志
  45.                   state<=3'b010;//默認進入狀態(tài)轉(zhuǎn)換控制狀態(tài)
  46.                   WAVE_MODE=3'b000;
  47.                   freq_data<= 32'h00029f18;//默認輸出2000HZ--1718->20hz,20 000->1718*1000=1718000=x"001a36f0"  --29f18=2000
  48.                   vol_ctrl<=68;//幅度控制
  49.                   vol_ctrl_reg<=8'h68;
  50.                   show_vol_ctrl<=8'h68;
  51.         end
  52.         3'b101: begin//狀態(tài)1 實現(xiàn)頻率的輸入 按A鍵確認輸入
  53.                          if (keynum==4'b1111 )  keyup_flag =1'b1; //判斷按鍵是否松開
  54.                          else begin
  55.                                   if(keyup_flag==1'b1) begin
  56.                                                 if(keynum<4'b1010 )begin //按下的按鍵小于10
  57.                                                    show_freq=show_freq<<4; //顯示器移位
  58.                                                    show_freq[3:0]=keynum;
  59.                                                         keyup_flag =1'b0;
  60.                                                    end
  61.                                                  else if(keynum==4'b1010)//A  ok確認輸入頻率
  62.                                                     begin
  63.                                                     keyup_flag =1'b0;
  64.                                                     cnt=0;
  65.                                                     state<=3'b001;//跑去下一個狀態(tài)
  66.                                                     fre_reg<=32'h00000000;
  67.                                                     end
  68.                                                   else if(keynum==4'b1011)//* select wave out  b選擇波形輸出
  69.                                                     begin
  70.                                                    
  71.                                                     WAVE_MODE=WAVE_MODE+1'b1;
  72.                                                     if(WAVE_MODE==3'b100) WAVE_MODE=3'b000;
  73.                                                     keyup_flag =1'b0;
  74.                                                     end
  75.                                      end
  76.                   end
  77.           end
  78.          3'b001: begin//狀態(tài)2 計算頻率控制字
  79.              case(cnt)
  80.                   0:begin fre_reg<=show_freq[27:24]*1000000;cnt=cnt+1'b1; end
  81.                   1:begin fre_reg<=fre_reg+show_freq[23:20]*100000;cnt=cnt+1'b1; end
  82.                   2:begin fre_reg<=fre_reg+show_freq[19:16]*10000;cnt=cnt+1'b1; end
  83.                   3:begin fre_reg<=fre_reg+show_freq[15:12]*1000;cnt=cnt+1'b1; end
  84.                   4:begin fre_reg<=fre_reg+show_freq[11:8]*100;cnt=cnt+1'b1; end
  85.                   5:begin fre_reg<=fre_reg+show_freq[7:4]*10;cnt=cnt+1'b1; end
  86.                   6:begin fre_reg<=fre_reg+show_freq[3:0];cnt=cnt+1'b1; end
  87.                   7:begin   freq_data<=fre_reg*86;//(2^(32))/50000000=85.89==86,,;2^n/50M
  88.                     cnt=cnt+1'b1;
  89.                     state<=3'b010;//完成頻率輸入跳回
  90.                     end
  91.                   endcase        
  92.           end
  93.           3'b010:begin//狀態(tài)三 控制狀態(tài)的轉(zhuǎn)換狀態(tài)轉(zhuǎn)換控制狀態(tài)
  94.                      if (keynum==4'b1111 )  keyup_flag =1'b1;//按鍵松開
  95.                      else begin
  96.                      if(keyup_flag==1'b1) begin
  97.                                                         if(keynum==4'b1010 )begin //a  freq 確認按鍵按下,進入輸入頻率狀態(tài)
  98.                                                                          state<=3'b101;
  99.                                                                          keyup_flag =1'b0;
  100.                                                                         show_freq=23'h000000;
  101.                                                                    end
  102.                                                           else if(keynum==4'b1100 )begin //c  vol C按下,進入輸入幅度狀態(tài)
  103.                                                                          state<=3'b011;//調(diào)節(jié)幅度
  104.                                                                          keyup_flag =1'b0;
  105.                                                                          show_vol_ctrl<=8'h00;//清0顯示
  106.                                                                    end
  107.                                                          else if(keynum==4'b1011)//* select wave out B按下,波形選擇輸出
  108.                                                                         begin
  109.                                                                   
  110.                                                                         WAVE_MODE=WAVE_MODE+1'b1;
  111.                                                                         if(WAVE_MODE==3'b100) WAVE_MODE=3'b000;
  112.                                                                         keyup_flag =1'b0;
  113.                                                                         end
  114.                           end
  115.                   end
  116.           end
  117.           3'b011:begin//幅度調(diào)節(jié)
  118.                    //show_vol_ctrl<=vol_ctrl_reg;//顯示
  119.                    if (keynum==4'b1111 )  keyup_flag =1'b1;
  120.                    else begin
  121.                      if(keyup_flag==1'b1) begin
  122.                                                                 if(keynum<4'b1010 )begin // 小于10的數(shù)按下
  123.                                                                            show_vol_ctrl=show_vol_ctrl<<4; //左移
  124.                                                                            show_vol_ctrl[3:0]=keynum;//按鍵值輸入
  125.                                                                                 keyup_flag =1'b0;
  126.                                                                            end
  127.                                                            else if(keynum==4'b1100 )begin //c  vol C按下,確認更改
  128.                                                                                  //state<=3'b010;
  129.                                                                                  keyup_flag =1'b0;
  130.                                                                                  //vol_ctrl<=vol_ctrl_reg; //送出更改的數(shù)據(jù)
  131.                                                                                  cnt=0;
  132.                                                                                  state<=3'b100;//跑去下一個狀態(tài)
  133.                                                    
  134.                                                                            end
  135.                                                                 else if(keynum==4'b1011)//* select wave out B按下,改變波形
  136.                                                                                 begin
  137.                                                                            
  138.                                                                                 WAVE_MODE=WAVE_MODE+1'b1;
  139.                                                                                 if(WAVE_MODE==3'b110) WAVE_MODE=3'b000;
  140.                                                                                 keyup_flag =1'b0;
  141.                                                                  end
  142.                       end
  143.                    end
  144.          
  145.           end
  146.           3'b100:begin //
  147.                           case(cnt)
  148.                                           0:begin vol_ctrl_reg<=show_vol_ctrl[7:4]*10;cnt=cnt+1'b1; end
  149.                                           1:begin vol_ctrl_reg<=vol_ctrl_reg+show_vol_ctrl[3:0];cnt=cnt+1'b1; end
  150.                                           2:begin  cnt=cnt+1'b1;
  151.                                                  state<=3'b010;//完成幅度輸入跳回控制狀態(tài)
  152.                                                  vol_ctrl<=vol_ctrl_reg; //送出更改的數(shù)據(jù)
  153.                                             end
  154.                           endcase        
  155.           end
  156.          default:  state<=3'b000;
  157.      endcase
  158.   end

  159. end
  160. endmodule
復制代碼

0.png
所有資料51hei提供下載:
V9.zip (12.14 MB, 下載次數(shù): 338)




評分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:1 發(fā)表于 2017-5-16 02:18 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

ID:400046 發(fā)表于 2018-12-23 20:58 | 顯示全部樓層
#在這里快速回復#verilog文件沒法看
回復

使用道具 舉報

ID:468708 發(fā)表于 2019-2-1 16:33 | 顯示全部樓層
無法編譯,編譯錯誤。
回復

使用道具 舉報

ID:502774 發(fā)表于 2019-5-23 21:47 來自手機 | 顯示全部樓層
可以可以。fpga真的不錯。速度很快
回復

使用道具 舉報

ID:502774 發(fā)表于 2019-5-24 11:29 | 顯示全部樓層
好資料
回復

使用道具 舉報

ID:502774 發(fā)表于 2020-4-11 23:50 來自手機 | 顯示全部樓層
我又來了明天下載試試
回復

使用道具 舉報

ID:1120418 發(fā)表于 2024-9-26 13:28 | 顯示全部樓層
該quarter II 是什么版本?
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品成人网 | 久久精品无码一区二区三区 | 欧美aaa一级片 | 久久久www成人免费无遮挡大片 | 亚洲欧洲视频 | 色婷婷av99xx | 老牛影视av一区二区在线观看 | 中文字幕一区二区三区在线观看 | 97福利在线| 欧美片网站免费 | 国产精品v | 91传媒在线播放 | 在线观看中文字幕一区二区 | 欧美日韩在线观看一区二区三区 | 91精品国产91久久久久久吃药 | 日韩爱爱网 | 国产女人叫床高潮大片免费 | 久久久久久综合 | 久久精品国产99国产 | 国产精品91网站 | 九九精品视频在线 | 欧美狠狠操 | a a毛片 | 日韩欧美三区 | 羞羞视频在线网站观看 | 免费国产一区二区 | av网站免费在线观看 | 亚洲高清在线观看 | 国产精品久久欧美久久一区 | 成人在线电影网站 | 91久久国产综合久久91精品网站 | 精品成人免费一区二区在线播放 | 日韩精品一区二区三区在线播放 | 国产一区二区三区精品久久久 | 国产精品一区二区三区在线 | 久久久夜色精品亚洲 | 国产精品视频在 | 久久久久亚洲精品 | 日韩视频中文字幕 | 久久免费国产 | 1区2区视频|