新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的信號發(fā)生器設(shè)計(jì)

基于FPGA的信號發(fā)生器設(shè)計(jì)

作者: 時(shí)間:2011-09-28 來源:網(wǎng)絡(luò) 收藏
1.2 定制LPM 元件

本文引用地址:http://m.butianyuan.cn/article/150153.htm

  打開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。

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

1.3 完成頂層

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

圖3 簡易正弦頂層電路設(shè)計(jì)

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

  對當(dāng)前設(shè)計(jì)通過執(zhí)行Quartus II 的命令Create ∠ Update/ Create Symbol Files for Current File,可以為設(shè)計(jì)電路建立一個(gè)元件符號,以便被頂層設(shè)計(jì)多功能所調(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, 時(shí)鐘信號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=11111111THEN

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

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



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉