1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      基于SOPC的函數信號發生器的設計

      更新時間: 2008-05-13 11:05:02來源: 粵嵌教育瀏覽量:914

        信號發生器在電子測量和自動控制領域應用十分廣泛,常用的信號發生器大多由模擬電路構成,由于電路復雜、調試麻煩且精度低等缺點,一些復雜模擬電路已被數字電路所代替。隨著計算機軟、硬件的發展,計算機與外設之間的數據通信越來越頻繁,也越來越便利,虛擬儀器應運而生。本文介紹基于SOPC實現的函數信號發生器部分原理。

      1 SOPC的簡介
        SOPC技術是美國Altrea公司于2000年早提出的,并同時推出了相應的開發軟件Quartus II。SOPC是基于FPGA解決方案的SOC, SOPC的設計是以IP為基礎的,以硬件描述語言VHDL為主要設計手段,借助于以計算機為平臺的EDA工具進行的。與傳統的專用集成電路設計技術相比, SOPC的設計全程,包括電路系統描述、硬件設計、仿真測試、綜合、調試、系統軟件設計,直至整個系統的完成,都由計算機完成。其設計技術直接面向用戶,使系統級專用集成電路的實現有了更多的途徑,即除傳統的ASIC器件外,還能通過大規模FPGA等可編程器件來實現。
        SOPC設計包括以32位Nios軟核處理器為核心的嵌入式系統的硬件配置、硬件設計、硬件仿真、軟件設計、軟件調試等。SOPC系統設計的基本軟件工具主要有: Quartus II,用于完成Nios系統的綜合、硬件優化、適配、編程下載和硬件系統測試; SOPCbuilder是Altera Nios嵌入式處理器開發軟件包,用于實現Nios系統的配置、生成、Nios系統相關的監控和軟件調試平臺的生成; ModelSim用于對SOPCBuilder生成的Nios的HDL描述進行系統功能仿真;Matlab/DSP Builder,可借助于生成Nios系統的硬件加速器,進而為其定制新的指令; GNU Pro用于進行軟件調試。

      2 函數信號發生器的設計步驟與實現
      (1)設計步驟
        用VHDL語言結合原理圖設計實現一個函數信號發生器,輸出正弦波、方波和三角波三種波形。將頻率控制、分頻、三角波、正弦波、方波發生各個模塊分別用VHDL語言編程為一個子程序,并把每一個模塊轉換成圖形文件,然后在原理圖編輯框調用這些圖形模塊,連接電路如圖1所示。通過按鍵1到按鍵4控制頻率調節f〔3...0〕,用按鍵6、按鍵7、按鍵8控制dlt、sin、sqr波形選通,把八位輸出接DAC0832通過D/A轉換,從示波器上就能看到波形輸出。按下不同的按鍵輸出不同的波形及頻率。
      (2)原理實現
        frqload.vhd:把四位頻率控制字f〔3...0〕轉換為相對應的整數輸出q,用于分頻計數使用;
      frq_div.vhd:把輸入的時鐘CLK進行分頻,對分頻計數a逐次減一,當分頻計數a被減到零時,給出一個輸出q;作為三角波模塊(delta_gen)、方波模塊(square_gen)、正弦波模塊(sin_gen)的時鐘clk,實現了對輸入時鐘CLK的a分頻。delta_gen.vhd:設定一個變量num,定義其范圍為“00000111”到“11111000”,每到一個脈沖,分別對它進行+8或-8,然后把改變后的num送到輸出q,生成了三角波信號。
        square_gen.vhd:設定一個變量num,每到一個脈沖,檢測它是否小于512,若小于512,則把高電平送到輸出,并對num+1,否則就輸出低電平,并賦值num為0,生成了方波信號。
        sin_gen.vhd:通過定義正弦數據表,每到一個脈沖,逐次查找并輸出相應的正弦數據,生成了正弦波形。
        mkgrp.vhd:用于控制輸出波形的選通,若只有sin輸入高電平,則輸出正弦波,以此類推,假若同時有dlt和sin都輸出高電平,則輸出波形時三角波和正弦波的疊加,依此類推。
      下面是用VHDL語言編程的三角波信號的程序。
      library ieee;
      use ieee.std_logic_1164.all;
      use ieee.std_logic_unsigned.all;
      entity delta_gen is
      port (clk, reset: in std_logic;
      q: out std_logic_vector (7 downto 0));
      end delta_gen;
      architecture a of delta_gen is
      begin
      process (clk, reset)
      variable num: std_logic_vector (7 downto 0);
      variable ff: std_logic;
      begin
      if reset='0' then
      num: =" 00000000";
      elsif clk'event and clk='1' then
      if ff='0' then
      if num=" 11111000" then
      num: =" 11111111";
      ff: ='1';
      else
      num: =num+8;
      end if;
      else
      if num=" 00000111" then
      num: =" 00000000";
      ff: ='0';
      else
      num: =num-8;
      end if;
      end if;
      end if;
      q<=num;
      end process;
      end a;
            
                                 圖1 連接電路
      3)具體實現過程
        編譯程序,通過編譯進入仿真階段。設CLK為1ns,只有sin為高電平,輸出是用邏輯八位表示的正弦波的波形數據。
      引腳鎖定,選用GW48-SOPC系統,目標芯片為ACEX1K系列EP1K30TC144-3,用模式5,并對八位的邏輯輸出進行D/A轉換,圖2為D/A擴展板原理圖(圖中R1= 10kΩ, R2= 50kΩ, Rp=15kΩ)。
                    
        在Quartus II中,通過菜單Assignments Editor項進入引腳鎖定編輯器,主時鐘CLK接Clock0 (第126引腳),用鍵1、鍵2、鍵3、鍵4控制四位頻率,接PIO0-PIO3,相應的引腳為8、9、10、12。用鍵6、鍵7、鍵8控制波形輸出的選通dlt、sin、sqr,對應的引腳為18、19、20。把輸出邏輯八位接系統板上的D/A轉換,即PIO24-PIO31,對應的引腳為41、42、65、67、68、69、70、72。將這些信息輸入引腳編輯器存儲后,必須再編譯一次才能將引腳鎖定信息編譯進編程下載文件中。將編譯產生的SOF格式下載文件配置進FPGA中,下載成功后即可進行硬件測試。通過GW48-SOPC系統上的模式選擇鍵進行模式選擇,連接示波器觀察輸出波形。圖3為函數信號發生器輸出的三角波。
                  
                             圖3 函數信號發生器輸出的三角波

      3 總結
        (1)輸出信號頻率的高低由頻率字和參考頻率等決定外,另一個因素是D/A的轉換速度。FPGA的速度與D/A相比要快得多,所以真正決定輸出信號頻率的因素是D/A的速度。
        (2)上面提供的程序在GW48—SOPC實驗開發系統中測試通過,產生的信號穩定,頻率連續可調。輸入頻率接實驗板上CLKO的50MHz以上時,波形幾乎沒有失真,且正弦波和三角波所要求的頻率與方波要求的頻率不完全相同,必須通過按鍵控制頻率輸出,為不同的波形提供不同的頻率,使其波形更完美。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲精品美女久久久久99 | 中文字幕久热精品免费视频 | 中文字乱码亚洲∧V日本亚洲 | 在线观看1024精品国产 | 日韩精品亚洲人成在线观看 | 尤物视频国产一区 |