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

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

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

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

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

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

 

圖1 信號發(fā)生器結(jié)構(gòu)框圖

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

  1.1 定制初始化數(shù)據(jù)文件

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

 

圖2 .mif 數(shù)據(jù)表格

  將波形數(shù)據(jù)填入mif 文件表中也可以使用QuartusII 以外的編輯器設(shè)計(jì)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… 項(xiàng)。單擊Next 按鈕后,選擇Storage 項(xiàng)下的LPM_ROM, 再選擇ACEX1K 器件和VHDL 語言方式;最后輸入ROM 文件存放的路徑和文件名:F:sing_gntdata_rom (定制的ROM 元件文件名),單擊Next 按鈕,選擇ROM 控制線、地址線和數(shù)據(jù)線。這里選擇地址線位寬和ROM 中數(shù)據(jù)數(shù)分別為6 和64; 選擇地址鎖存控制信號inclock。

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

 

1.3 完成頂層設(shè)計(jì)

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

 

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

 

圖4 當(dāng)前工程仿真波形輸出

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

  2 其他信號部分原程序

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

  LIBRARY IEEE;--遞增鋸齒波的設(shè)計(jì)

  USE IEEE.STD LOGIC 1164.ALL;

  USE IEEE.STD LOGIC UNSIGNED.ALL;

  ENTITY signal2 IS --遞增鋸齒波signal1

  PORT(clk,reset:IN std_logic;--復(fù)位信號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;--方波的設(shè)計(jì)

  USE IEEE.STD_LOGIC_1164.ALL;

  USE IEEE.STD_LOGIC_UNSIGNED.ALL;

  entity signal5 is --方波signal5

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

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

  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 頂層電路的設(shè)計(jì)

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

 

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

4 D/A 轉(zhuǎn)換器的連接

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

 

圖6 DAC0832 的連接電路

  5 實(shí)現(xiàn)與測試

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

 

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

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

 

圖8 階梯波信號產(chǎn)生模塊signal4 的仿真波形

  6 結(jié)束語

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

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

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉