www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]基于FPGA的信號發(fā)生器設計

FPGA 芯片為載體, 通過QuartusII 的LPM_ROM 模塊和VHDL 語言為核心設計一個多功能信號發(fā)生器,根據輸入信號的選擇可以輸出遞增鋸齒波、遞減鋸齒波、三角波、階梯波和方波等5 種信號,通過QuartusII 軟件進行波形仿真、定時分析,仿真正確后,利用實驗板提供的資源,下載到芯片中實現(xiàn)預定功能。

  信號發(fā)生器又稱為波形發(fā)生器, 是一種常用的信號源,廣泛應用于電子電路、通信、控制和教學實驗等領域。它是科研及工程實踐中最重要的儀器之一, 以往多用硬件組成,系統(tǒng)結構比較復雜,可維護性和可操作性不佳。隨著計算機技術的發(fā)展,信號發(fā)生器的設計制作越來越多的是用計算機技術,種類繁多,價格、性能差異很大。用FPGA 或CPLD 來實現(xiàn),它的優(yōu)點是可以進行功能仿真,而且FPGA 和CPLD 的片內資源豐富,設計的流程簡單。用FPGA 所構成的系統(tǒng)來產生波形信號,這個系統(tǒng)既能和主機系統(tǒng)相連,用相應的上層軟件展示波形信號, 又方便程序的編寫, 而且還有A/D0809接口可以產生模擬信號的輸出和外面的示波器相連。

  1 正弦信號發(fā)生器的LPM 定制
 

  正弦信號發(fā)生器由計數器或地址發(fā)生器(6 位)、正弦信號數據ROM (6 位地址線,8 位數據線, 含有64 個8 位數據, 一個周期)、原理圖頂層設計和8 位D/A ( 實驗中用DAC0832 代替)。

  其框圖如圖1 所示。其中信號產生模塊將產生所需的各種信號,這些信號的產生可以有多種方式,如用計數器直接產生信號輸出,或者用計數器產生存儲器的地址,在存儲器中存放信號輸出的數據。信號發(fā)生器的控制模塊可以用數據選擇器實現(xiàn), 用8 選1 數據選擇器實現(xiàn)對5 種信號的選擇。

 

圖1 信號發(fā)生器結構框圖

  最后將波形數據送入D/A 轉換器,將數字信號轉換為模擬信號輸出。用示波器測試D/A 轉換器的輸出,可以觀測到5 種信號的輸出。

  1.1 定制初始化數據文件

  QuartusII 能接受的LPM_ROM 模塊中的初始化數據文件的格式有兩種:。mif 格式文件和。hex 格式文件。實際應用中只要使用其中一種格式的文件即可。下面采用。mif 格式文件,調出產生ROM 數據文件大小的選擇窗。根據64 點8 位正弦數據的情況,可選ROM 的數據數Number 為64,數據寬Word size 取8 位。單擊OK 按鈕,將出現(xiàn)圖2 所示的空的。mif數據表格,表格中的數據格式可通過鼠標右鍵單擊窗口邊緣的地址數據彈出的窗口選擇。

 

圖2 .mif 數據表格

  將波形數據填入mif 文件表中也可以使用QuartusII 以外的編輯器設計MIF 文件,其格式如下:

  #include <STdio.h>

  #include "math.h"

  main()

  {int i;float s;

  for (i=0;i<1024; i++)

  { s = sin(atan(1)*8*i/1024);

  printf("%d : %d;n",i,(int)((s+1)*1023/2)); }}

  把上述程序編譯成程序后, 可在DOS 命令行下執(zhí)行命令:

  romgen > sin_ rom. mif;[!--empirenews.page--]1.2 定制LPM 元件

  打開Mega Wizard Plug_In Manager 初始對話框, 選擇Create a new custom… 項。單擊Next 按鈕后,選擇Storage 項下的LPM_ROM, 再選擇ACEX1K 器件和VHDL 語言方式;最后輸入ROM 文件存放的路徑和文件名:F:sing_gntdata_rom (定制的ROM 元件文件名),單擊Next 按鈕,選擇ROM 控制線、地址線和數據線。這里選擇地址線位寬和ROM 中數據數分別為6 和64; 選擇地址鎖存控制信號inclock。

  對于地址信號發(fā)生器的設計。方法一:用VHDL 語言設計6 位計數器,產生其元件符號;方法二:仍采用LPM 定制的方法。

 

1.3 完成頂層設計

  按圖3 畫出頂層原理圖,然后進行編譯,波形仿真如圖4所示。

 

圖3 簡易正弦信號發(fā)生器頂層電路設計

 

圖4 當前工程仿真波形輸出

  對當前設計通過執(zhí)行Quartus II 的命令Create ∠ Update/ Create Symbol Files for Current File,可以為設計電路建立一個元件符號,以便被頂層設計多功能信號發(fā)生器所調用。

  2 其他信號部分原程序

  其他各信號發(fā)生器可參照正弦信號發(fā)生器的設計方法設計或直接采用VHDL 硬件描述語言進行設計。

  LIBRARY IEEE;--遞增鋸齒波的設計

  USE IEEE.STD LOGIC 1164.ALL;

  USE IEEE.STD LOGIC UNSIGNED.ALL;

  ENTITY signal2 IS --遞增鋸齒波signal1

  PORT(clk,reset:IN std_logic;--復位信號reset, 時鐘信號clk

  q:OUT std_logic_vector (7 DOWNTO 0));--輸出信號q

  END signal2;

  ARCHITECTURE b OF signal2 IS

  BEGIN

  PROCESS(clk,reset)

  VARIABLE tmp:std_logic_vector(7 DOWNTO 0);

  BEGIN

  IF reset=‘0‘ THEN

  tmp:="00000000";

  ELSIT rising_ege(clk)THEN

  IF tmp="11111111"THEN

  tmp:="00000000";

  ELSE

  tmp:=tmp+1; --遞增信號的變化

  END IF;

  END IF;

  q<=tmp:

  END PROCESS;

  END b;

 

LIBRARY IEEE;--方波的設計

  USE IEEE.STD_LOGIC_1164.ALL;

  USE IEEE.STD_LOGIC_UNSIGNED.ALL;

  entity signal5 is --方波signal5

  PORT(clk,reset:in std_logic; --復位信號reset,時鐘信號clk

  q:out std_logic_vector (7 DOWNTO 0)); --輸出信號q,8 位數字信號

  END signal5;

  ARCHITEECTURE a OF signal5 IS

  SIGNAL; a:std_logic;

  BEGIN

  PROCESS(clk,reset)

  YARIABLE tmp:std_logic_vector(7 downto 0);

  BEQIN

  IF reset=‘0‘ then

  a<=‘0‘;

  elsif rising_edge(clk)THEN

  IF tmp="11111111" THEN

  tmp:="00000000";

  ELSE

  tmp:=tmp+1;

  END IF;

  if tmp<="10000000" then

  a<=‘1‘;

  else

  a<=‘0‘;

  END IF;

  END IF;

  END PROCESS;

  PROCESS(clk,a)

  BEGIN

  IF rising_edge(clk)THEN

  IF a=‘1‘ THEN

  q<="11111111";

  ELSE

  q<="00000000";

  END IF;

  END IF;

  END PROCESS;

  END a;

  3 頂層電路的設計

  將上述6 個模塊生成符號,供頂層電路調用。這些模塊分別是:遞減鋸齒波信號產生模塊signall、遞增鋸齒波信號產生模塊signal2、三角波信號產生模塊signal3、階梯波信號產生模塊signal4、方波信號產生模塊signal5 和數據選擇器mux51。頂層電路的連接如圖5 所示。

 

圖5 信號發(fā)生器頂層電路[!--empirenews.page--]

4 D/A 轉換器的連接

  選擇一個D/A 轉換器,將數據選擇器的輸出與D/A 轉換器的輸入端連接。D/A 轉換器的可選范圍很寬,這里以常用的DAC0832 為例。DAC0832 的連接電路如圖6 所示。

 

圖6 DAC0832 的連接電路

  5 實現(xiàn)與測試

  信號發(fā)生器頂層電路的仿真波形如圖7 所示,這里只就輸入選擇信號等于5 時的情況進行仿真,此時輸出波形是方波,輸出的數字信號為周期性的全0 或全1。

 

圖7 信號發(fā)生器頂層電路的仿真波形

  信號發(fā)生器的底層電路模塊也可以分別進行仿真,例如對階梯波信號產生模塊signal4 進行仿真,仿真波形如圖8 所示,輸出的數字信號為階梯狀變化。

 

圖8 階梯波信號產生模塊signal4 的仿真波形

  6 結束語

  硬件電路設計主要是設計相關模塊的設計思想的可視化,是相關模塊的電路圖的匯總和其相關仿真波形的集錦,該部分條理清晰,思路明確,從中我們可以清晰地看到該設計方案的具體模塊和整個設計的原理結構實圖;程序設計這一部分主要闡述該設計的設計方法與設計思想,進一步從軟件設計上揭示設計構思,主要包含了整個設計所用到的模塊的硬件描述語言的設計, 本文設計思路清晰,通過QuartusII 軟件進行波形仿真成功,特別是正弦信號發(fā)生器的LPM 定制對于編程不是特別強的人員提供另一種途徑來實現(xiàn),加深理解EDA 的層次設計思想,很好的把握住了教學的改革方向,更好的鍛煉了學生理論聯(lián)系實踐的能力。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉