基于SOPC的函數(shù)信號(hào)發(fā)生器的設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
信號(hào)發(fā)生器在電子測(cè)量和自動(dòng)控制領(lǐng)域應(yīng)用十分廣泛,常用的信號(hào)發(fā)生器大多由模擬電路構(gòu)成,由于電路復(fù)雜、調(diào)試麻煩且精度低等缺點(diǎn),一些復(fù)雜模擬電路已被數(shù)字電路所代替。
隨著計(jì)算機(jī)軟、硬件的發(fā)展,計(jì)算機(jī)與外設(shè)之間的數(shù)據(jù)通信越來(lái)越頻繁,也越來(lái)越便利,虛擬儀器應(yīng)運(yùn)而生。本文介紹基于SOPC實(shí)現(xiàn)的函數(shù)信號(hào)發(fā)生器部分原理。
1 SOPC的簡(jiǎn)介
SOPC技術(shù)是美國(guó)Altrea公司于2000年最早提出的,并同時(shí)推出了相應(yīng)的開(kāi)發(fā)軟件Quartus II。SOPC是基于FPGA解決方案的SOC, SOPC的設(shè)計(jì)是以IP為基礎(chǔ)的,以硬件描述語(yǔ)言VHDL為主要設(shè)計(jì)手段,借助于以計(jì)算機(jī)為平臺(tái)的EDA工具進(jìn)行的。與傳統(tǒng)的專用集成電路設(shè)計(jì)技術(shù)相比, SOPC的設(shè)計(jì)全程,包括電路系統(tǒng)描述、硬件設(shè)計(jì)、仿真測(cè)試、綜合、調(diào)試、系統(tǒng)軟件設(shè)計(jì),直至整個(gè)系統(tǒng)的完成,都由計(jì)算機(jī)完成。其設(shè)計(jì)技術(shù)直接面向用戶,使系統(tǒng)級(jí)專用集成電路的實(shí)現(xiàn)有了更多的途徑,即除傳統(tǒng)的ASIC器件外,還能通過(guò)大規(guī)模FPGA等可編程器件來(lái)實(shí)現(xiàn)。
SOPC設(shè)計(jì)包括以32位Nios軟核處理器為核心的嵌入式系統(tǒng)的硬件配置、硬件設(shè)計(jì)、硬件仿真、軟件設(shè)計(jì)、軟件調(diào)試等。SOPC系統(tǒng)設(shè)計(jì)的基本軟件工具主要有: Quartus II,用于完成Nios系統(tǒng)的綜合、硬件優(yōu)化、適配、編程下載和硬件系統(tǒng)測(cè)試; SOPCbuilder是Altera Nios嵌入式處理器開(kāi)發(fā)軟件包,用于實(shí)現(xiàn)Nios系統(tǒng)的配置、生成、Nios系統(tǒng)相關(guān)的監(jiān)控和軟件調(diào)試平臺(tái)的生成; ModelSim用于對(duì)SOPCBuilder生成的Nios的HDL描述進(jìn)行系統(tǒng)功能仿真;Matlab/DSP Builder,可借助于生成Nios系統(tǒng)的硬件加速器,進(jìn)而為其定制新的指令; GNU Pro用于進(jìn)行軟件調(diào)試。
2 函數(shù)信號(hào)發(fā)生器的設(shè)計(jì)步驟與實(shí)現(xiàn)
(1)設(shè)計(jì)步驟
用VHDL語(yǔ)言結(jié)合原理圖設(shè)計(jì)實(shí)現(xiàn)一個(gè)函數(shù)信號(hào)發(fā)生器,輸出正弦波、方波和三角波三種波形。將頻率控制、分頻、三角波、正弦波、方波發(fā)生各個(gè)模塊分別用VHDL語(yǔ)言編程為一個(gè)子程序,并把每一個(gè)模塊轉(zhuǎn)換成圖形文件,然后在原理圖編輯框調(diào)用這些圖形模塊,連接電路如圖1所示。通過(guò)按鍵1到按鍵4控制頻率調(diào)節(jié)f〔3...0〕,用按鍵6、按鍵7、按鍵8控制dlt、sin、sqr波形選通,最后把八位輸出接DAC0832通過(guò)D/A轉(zhuǎn)換,從示波器上就能看到波形輸出。按下不同的按鍵輸出不同的波形及頻率。
(2)原理實(shí)現(xiàn)
frqload.vhd:把四位頻率控制字f〔3...0〕轉(zhuǎn)換為相對(duì)應(yīng)的整數(shù)輸出q,用于分頻計(jì)數(shù)使用; frq_div.vhd:把輸入的時(shí)鐘CLK進(jìn)行分頻,對(duì)分頻計(jì)數(shù)a逐次減一,當(dāng)分頻計(jì)數(shù)a被減到零時(shí),給出一個(gè)輸出q;作為三角波模塊(delta_gen)、方波模塊(square_gen)、正弦波模塊(sin_gen)的時(shí)鐘clk,實(shí)現(xiàn)了對(duì)輸入時(shí)鐘CLK的a分頻。delta_gen.vhd:設(shè)定一個(gè)變量num,定義其范圍為“00000111”到“11111000”,每到一個(gè)脈沖,分別對(duì)它進(jìn)行+8或-8,然后把改變后的num送到輸出q,生成了三角波信號(hào)。
square_gen.vhd:設(shè)定一個(gè)變量num,每到一個(gè)脈沖,檢測(cè)它是否小于512,若小于512,則把高電平送到輸出,并對(duì)num+1,否則就輸出低電平,并賦值num為0,生成了方波信號(hào)。
sin_gen.vhd:通過(guò)定義正弦數(shù)據(jù)表,每到一個(gè)脈沖,逐次查找并輸出相應(yīng)的正弦數(shù)據(jù),生成了正弦波形。
mkgrp.vhd:用于控制輸出波形的選通,若只有sin輸入高電平,則輸出正弦波,以此類推,假若同時(shí)有dlt和sin都輸出高電平,則輸出波形時(shí)三角波和正弦波的疊加,依此類推。
下面是用VHDL語(yǔ)言編程的三角波信號(hào)的程序。
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)具體實(shí)現(xiàn)過(guò)程
編譯程序,通過(guò)編譯進(jìn)入仿真階段。設(shè)CLK為1ns,只有sin為高電平,輸出是用邏輯八位表示的正弦波的波形數(shù)據(jù)。
引腳鎖定,選用GW48-SOPC系統(tǒng),目標(biāo)芯片為ACEX1K系列EP1K30TC144-3,用模式5,并對(duì)八位的邏輯輸出進(jìn)行D/A轉(zhuǎn)換,圖2為D/A擴(kuò)展板原理圖(圖中R1= 10kΩ, R2= 50kΩ, Rp=15kΩ)。
在Quartus II中,通過(guò)菜單Assignments Editor項(xiàng)進(jìn)入引腳鎖定編輯器,主時(shí)鐘CLK接Clock0 (第126引腳),用鍵1、鍵2、鍵3、鍵4控制四位頻率,接PIO0-PIO3,相應(yīng)的引腳為8、9、10、12。用鍵6、鍵7、鍵8控制波形輸出的選通dlt、sin、sqr,對(duì)應(yīng)的引腳為18、19、20。把輸出邏輯八位接系統(tǒng)板上的D/A轉(zhuǎn)換,即PIO24-PIO31,對(duì)應(yīng)的引腳為41、42、65、67、68、69、70、72。將這些信息輸入引腳編輯器存儲(chǔ)后,必須再編譯一次才能將引腳鎖定信息編譯進(jìn)編程下載文件中。將編譯產(chǎn)生的SOF格式下載文件配置進(jìn)FPGA中,下載成功后即可進(jìn)行硬件測(cè)試。通過(guò)GW48-SOPC系統(tǒng)上的模式選擇鍵進(jìn)行模式選擇,連接示波器觀察輸出波形。
圖3為函數(shù)信號(hào)發(fā)生器輸出的三角波。
圖3 函數(shù)信號(hào)發(fā)生器輸出的三角波
3 總結(jié)
(1)輸出信號(hào)頻率的高低由頻率字和參考頻率等決定外,另一個(gè)因素是D/A的轉(zhuǎn)換速度。FPGA的速度與D/A相比要快得多,所以真正決定輸出信號(hào)頻率的因素是D/A的速度。
(2)上面提供的程序在GW48—SOPC實(shí)驗(yàn)開(kāi)發(fā)系統(tǒng)中測(cè)試通過(guò),產(chǎn)生的信號(hào)穩(wěn)定,頻率連續(xù)可調(diào)。輸入頻率接實(shí)驗(yàn)板上CLKO的50MHz以上時(shí),波形幾乎沒(méi)有失真,且正弦波和三角波所要求的頻率與方波要求的頻率不完全相同,必須通過(guò)按鍵控制頻率輸出,為不同的波形提供不同的頻率,使其波形更完美。