0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

通過(guò)LPM_ROM模塊和VHDL語(yǔ)言為核心設(shè)計(jì)多功能信號(hào)發(fā)生器

電子工程師 ? 來(lái)源:未知 ? 作者:王淳 ? 2018-10-23 10:05 ? 次閱讀

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

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

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

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

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

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

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

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ù)格式可通過(guò)鼠標(biāo)右鍵單擊窗口邊緣的地址數(shù)據(jù)彈出的窗口選擇。

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

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

#include

#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;

1.2 定制LPM 元件

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

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

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

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

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

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

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

2 其他信號(hào)部分原程序

其他各信號(hào)發(fā)生器可參照正弦信號(hào)發(fā)生器的設(shè)計(jì)方法設(shè)計(jì)或直接采用VHDL 硬件描述語(yǔ)言進(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ù)位信號(hào)reset, 時(shí)鐘信號(hào)clk

q:OUT std_logic_vector (7 DOWNTO 0));--輸出信號(hào)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; --遞增信號(hào)的變化

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ù)位信號(hào)reset,時(shí)鐘信號(hào)clk

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

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

圖5 信號(hào)發(fā)生器頂層電路

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

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

圖6 DAC0832 的連接電路

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

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

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

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

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

6 結(jié)束語(yǔ)

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


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1620

    文章

    21510

    瀏覽量

    598952
  • ROM
    ROM
    +關(guān)注

    關(guān)注

    4

    文章

    539

    瀏覽量

    85436
  • vhdl
    +關(guān)注

    關(guān)注

    30

    文章

    816

    瀏覽量

    127954
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    信號(hào)發(fā)生器怎么輸出調(diào)制信號(hào)的頻率

    發(fā)生器的基本原理 信號(hào)發(fā)生器核心原理是利用振蕩產(chǎn)生周期性的電信號(hào),然后
    的頭像 發(fā)表于 06-03 15:24 ?539次閱讀

    信號(hào)發(fā)生器是干什么用的 信號(hào)發(fā)生器可以輸出電流嗎

    領(lǐng)域。 信號(hào)發(fā)生器的工作原理 信號(hào)發(fā)生器核心是振蕩,它負(fù)責(zé)產(chǎn)生周期性的電
    的頭像 發(fā)表于 06-03 11:29 ?1054次閱讀

    信號(hào)發(fā)生器功能和使用方法是什么

    發(fā)生器功能、分類、使用方法以及應(yīng)用場(chǎng)景。 一、信號(hào)發(fā)生器功能 產(chǎn)生標(biāo)準(zhǔn)信號(hào)
    的頭像 發(fā)表于 06-03 11:01 ?1249次閱讀

    信號(hào)發(fā)生器的sync什么意思

    信號(hào)發(fā)生器是一種電子設(shè)備,用于產(chǎn)生具有特定頻率、幅度和波形的電信號(hào)。這些信號(hào)可以用于測(cè)試和測(cè)量電子設(shè)備的性能,或者作為其他電子系統(tǒng)的輸入信號(hào)
    的頭像 發(fā)表于 06-03 10:59 ?1789次閱讀

    信號(hào)發(fā)生器如何輸出直流信號(hào)?

    信號(hào)發(fā)生器是一種多功能的測(cè)試設(shè)備,用于產(chǎn)生各種波形、頻率和幅度的電信號(hào)。
    的頭像 發(fā)表于 05-20 16:02 ?1207次閱讀

    函數(shù)發(fā)生器、信號(hào)發(fā)生器和波形發(fā)生器的區(qū)別

    在電子測(cè)試和測(cè)量領(lǐng)域,函數(shù)發(fā)生器信號(hào)發(fā)生器和波形發(fā)生器都是重要的測(cè)試儀器,它們各自具有獨(dú)特的功能和應(yīng)用場(chǎng)景。本文將詳細(xì)介紹這三種
    的頭像 發(fā)表于 05-15 14:49 ?1031次閱讀

    proteus波形發(fā)生器怎么找 proteus波形發(fā)生器叫什么

    Proteus中的波形發(fā)生器以及如何使用它來(lái)生成不同類型的波形。 Proteus中的波形發(fā)生器模塊叫做“Function Generator”,它是一個(gè)多功能
    的頭像 發(fā)表于 02-23 16:49 ?6128次閱讀

    信號(hào)發(fā)生器怎么輸出調(diào)制信號(hào)信號(hào)發(fā)生器功能和使用方法

    介紹信號(hào)發(fā)生器功能和使用方法。 一、信號(hào)發(fā)生器輸出調(diào)制信號(hào)的過(guò)程 了解調(diào)制
    的頭像 發(fā)表于 02-23 16:38 ?2295次閱讀

    函數(shù)發(fā)生器信號(hào)發(fā)生器的區(qū)別和聯(lián)系

    函數(shù)發(fā)生器信號(hào)發(fā)生器是電子工程領(lǐng)域常用的兩種設(shè)備,它們?cè)趯?shí)驗(yàn)室和工業(yè)制造領(lǐng)域中扮演著重要的角色。盡管兩者在名稱和功能上有一定的相似性,但它們的原理和應(yīng)用有所不同。本文將詳細(xì)探討函數(shù)
    的頭像 發(fā)表于 02-23 16:10 ?1591次閱讀

    信號(hào)發(fā)生器是干什么用的 信號(hào)發(fā)生器和示波器怎么連接

    恒定頻率和恒定幅度的正弦波信號(hào),也可以提供脈沖、方波、三角波、鋸齒波等不同類型的波形信號(hào)。通過(guò)改變信號(hào)發(fā)生器的設(shè)置,用戶可以精確地控制
    的頭像 發(fā)表于 01-30 10:08 ?2348次閱讀

    信號(hào)發(fā)生器是干什么用的 信號(hào)發(fā)生器的使用方法

    、信號(hào)發(fā)生器的分類和功能 信號(hào)發(fā)生器根據(jù)其工作原理和功能可以分為多種類型,其中常見(jiàn)的有函數(shù)
    的頭像 發(fā)表于 01-19 14:51 ?2374次閱讀

    信號(hào)發(fā)生器的特點(diǎn) 信號(hào)發(fā)生器可以產(chǎn)生哪些波形?

    : 1. 多功能信號(hào)發(fā)生器可以產(chǎn)生多種不同的波形,包括正弦波、方波、鋸齒波、三角波、脈沖波等。這些波形可以根據(jù)實(shí)際需求進(jìn)行調(diào)節(jié)和選擇,具有較好的靈活性。 2. 大范圍輸出:信號(hào)
    的頭像 發(fā)表于 12-21 15:05 ?1182次閱讀

    信號(hào)發(fā)生器如何發(fā)出雙脈沖?

    脈沖信號(hào),并提供相應(yīng)的步驟和示例。 1. 確定信號(hào)發(fā)生器的特性和功能 在使用信號(hào)發(fā)生器之前,需要
    的頭像 發(fā)表于 12-21 15:03 ?1588次閱讀

    信號(hào)發(fā)生器怎么輸出調(diào)制信號(hào) 信號(hào)發(fā)生器輸出信號(hào)衰減如何調(diào)整?

    信號(hào)發(fā)生器怎么輸出調(diào)制信號(hào) 信號(hào)發(fā)生器輸出信號(hào)衰減如何調(diào)整?
    的頭像 發(fā)表于 12-21 14:56 ?4658次閱讀

    信號(hào)發(fā)生器功能 信號(hào)發(fā)生器的使用方法

    信號(hào)發(fā)生器是一種用于產(chǎn)生各種類型的電子信號(hào)的設(shè)備。它被廣泛應(yīng)用于電子測(cè)試、儀器校準(zhǔn)、電子設(shè)備研發(fā)等領(lǐng)域。信號(hào)發(fā)生器能夠產(chǎn)生多種波形
    的頭像 發(fā)表于 10-05 16:04 ?5318次閱讀