使用LeonardoSpectrum綜合Xilinx FPGA的VHDL程序
發(fā)布時間:2007/8/28 0:00:00 訪問次數(shù):720
本文總結(jié)了使用LeonardoSpectrum綜合Xilinx FPGA的VHDL程序應(yīng)用,以及在VHDL中使用不同類型RAM的方法。
LeonardoSpectrum 是Mentor Graphics公司設(shè)計的功能強大的EPLD/FPGA/ASIC綜合工具,支持大部分EPLD/FPGA廠商的產(chǎn)品。LeonardoSpectrum支持VHDL、Verilog、EDIF的綜合、優(yōu)化和定時分析,可以運行在Windows 98/2000/NT/XP和HP、SUN 的UNIX平臺上。
LeonardoSpectrum通過名為exemplar的庫,可以在用HDL設(shè)計FPGA/EPLD時使用與原理圖設(shè)計相同的功能。LeonardoSpectrum對于Xilinx公司的EPLD/FPGA支持尤其完善,使得用HDL的設(shè)計在效率和功能上可以和原理圖的設(shè)計相當。本文總結(jié)了使用LeonardoSpectrum過程一些有用的設(shè)計方法。
圖1 全局時鐘使用的map結(jié)果
圖2 延遲鎖相環(huán)使用map結(jié)果
圖3 塊狀RAM的map結(jié)果
圖4 分布式RAM的map結(jié)果
屬性的使用
在LeonardoSpectrum中,可以在程序中對信號賦予屬性來對綜合結(jié)果進行控制。在使用LeonardoSpectrum綜合時,除了LeonardoSpectrum提供的屬性外,可以把Xilinx原理圖設(shè)計中的某些元件作為屬性來賦予信號,主要限于雙端口的元件,例如IBUFG,BUFG等等。LeonardoSpectrum所提供的屬性可以參看使用手冊。
如果使用LeonardoSpectrum來綜合,建議調(diào)用exemplar庫,以獲得更多的功能支持,本文介紹的程序都需要使用exemplar庫。下面是對程序中一個信號通過賦予bufg的屬性而定義該信號為全局時鐘的例子。
......
ARCHITECTURE rtl of bufg IS
SIGNAL clk :td_logic;
attribute buffer_sig of clk: signal is "bufg";
BEGIN
clk<=clkin;
clkout<=clk;
process(clk)
begin
if(clk'event and clk='1') then
end if;
end process;
END rtl;
這個程序選用的芯片是Xilinx的spartanII 系列XC2S50-5QP208,經(jīng)LeonardoSpectrum綜合后,用Xilinx ISE5.1進行map后的結(jié)果如圖1所示,可以看到使用了1個全局時鐘。
元件的引用
在Xilinx的FPGA/EPLD的原理圖設(shè)計中需要用到元件庫,元件庫中包含一些特殊功能的元件,例如延遲鎖相環(huán)(DLL)、全局時鐘BUF、邊界掃描電路、數(shù)字時鐘管理器(DCM)、內(nèi)置SRAM等。LeonardoSpectrum提供的exemplar庫中的程序包使得設(shè)計者可以在VHDL程序中直接引用原理圖庫中所包含的元件。引用元件時,先調(diào)用exemplar庫,對要引用的元件按照原理圖庫中的描述進行聲明。引用元件時可以只使用其中一部分參數(shù),不必對元件所有的參數(shù)進行映射。
下面是引用Xilinx的FPGA的延遲鎖相環(huán)〔DLL〕的例子。
............
ARCHITECTURE rtl of pll IS
SIGNAL clk :std_logic;
component clkdll --鎖相環(huán)
port(clkin,clkfb,rst :in std_logic;clk0,clk90, clk180,clk270,clkdv,locked :out std_logic);
end component;
BEGIN
CLK1: clkdll port map(clkin=>clkin,clkfb=>clk,rst=>'0', clk0=>clk,clk90=>clkout );
process(clk)
begin
if(clk'event and clk='1') then
data_out<=data_in;
end if;
end process;
END rtl;
這個程序也選用Xilinx的XC2S50-5QP208,經(jīng)LeonardoSpectrum綜合后,用Xilinx ISE5.1進行map后的結(jié)果如圖2所示,可以看到使用了一個DLL。
RAM的綜合
RAM設(shè)計是Xilinx FPGA的一個特色,按照在芯片內(nèi)的分布情況可以分為分布式RAM和塊狀RAM,分布式RAM分布在每個LC中,可以將一個LC作為16×1的同步RAM使用,也可以將兩個LC聯(lián)合起來作為16×2、32×1的同步RAM或者16×1的雙口RAM使用,塊狀RAM是專用的分布FPGA邊緣的RAM塊。RAM使用時又可以作為ROM,單口RAM、雙口RAM等。如果是原理圖設(shè)計,可以在選擇元件時選擇不同的元件來選擇不同類型的RAM,但是對于用描述語言來進行RAM設(shè)計時,就需要綜合工具的支持,不同的綜合工具,對相同的語句,可能就綜合成不同類型的RAM。LeonardoSpectrum對VHDL的支持達到相當?shù)母叨,除了提供屬性的方法來使用分布式RAM和塊狀RAM外,還可以在設(shè)計時使用不同的描述語句來產(chǎn)生分布式RAM和塊狀RAM。下面是一個綜合成塊狀RAM的例子。
......
ARCHITECTURE rtl of blockram IS
TYPE RAM IS ARRAY ( 0 TO 127 ) OF STD_LOGIC_VECTOR( 7 DOWNTO 0 );
SIGNAL testram :ram;
SIGNAL cc1,cc2 :std_logic_vector(6 downto 0);
SIGNAL addr1,addr2 :integer range 0 to 127;
本文總結(jié)了使用LeonardoSpectrum綜合Xilinx FPGA的VHDL程序應(yīng)用,以及在VHDL中使用不同類型RAM的方法。
LeonardoSpectrum 是Mentor Graphics公司設(shè)計的功能強大的EPLD/FPGA/ASIC綜合工具,支持大部分EPLD/FPGA廠商的產(chǎn)品。LeonardoSpectrum支持VHDL、Verilog、EDIF的綜合、優(yōu)化和定時分析,可以運行在Windows 98/2000/NT/XP和HP、SUN 的UNIX平臺上。
LeonardoSpectrum通過名為exemplar的庫,可以在用HDL設(shè)計FPGA/EPLD時使用與原理圖設(shè)計相同的功能。LeonardoSpectrum對于Xilinx公司的EPLD/FPGA支持尤其完善,使得用HDL的設(shè)計在效率和功能上可以和原理圖的設(shè)計相當。本文總結(jié)了使用LeonardoSpectrum過程一些有用的設(shè)計方法。
圖1 全局時鐘使用的map結(jié)果
圖2 延遲鎖相環(huán)使用map結(jié)果
圖3 塊狀RAM的map結(jié)果
圖4 分布式RAM的map結(jié)果
屬性的使用
在LeonardoSpectrum中,可以在程序中對信號賦予屬性來對綜合結(jié)果進行控制。在使用LeonardoSpectrum綜合時,除了LeonardoSpectrum提供的屬性外,可以把Xilinx原理圖設(shè)計中的某些元件作為屬性來賦予信號,主要限于雙端口的元件,例如IBUFG,BUFG等等。LeonardoSpectrum所提供的屬性可以參看使用手冊。
如果使用LeonardoSpectrum來綜合,建議調(diào)用exemplar庫,以獲得更多的功能支持,本文介紹的程序都需要使用exemplar庫。下面是對程序中一個信號通過賦予bufg的屬性而定義該信號為全局時鐘的例子。
......
ARCHITECTURE rtl of bufg IS
SIGNAL clk :td_logic;
attribute buffer_sig of clk: signal is "bufg";
BEGIN
clk<=clkin;
clkout<=clk;
process(clk)
begin
if(clk'event and clk='1') then
end if;
end process;
END rtl;
這個程序選用的芯片是Xilinx的spartanII 系列XC2S50-5QP208,經(jīng)LeonardoSpectrum綜合后,用Xilinx ISE5.1進行map后的結(jié)果如圖1所示,可以看到使用了1個全局時鐘。
元件的引用
在Xilinx的FPGA/EPLD的原理圖設(shè)計中需要用到元件庫,元件庫中包含一些特殊功能的元件,例如延遲鎖相環(huán)(DLL)、全局時鐘BUF、邊界掃描電路、數(shù)字時鐘管理器(DCM)、內(nèi)置SRAM等。LeonardoSpectrum提供的exemplar庫中的程序包使得設(shè)計者可以在VHDL程序中直接引用原理圖庫中所包含的元件。引用元件時,先調(diào)用exemplar庫,對要引用的元件按照原理圖庫中的描述進行聲明。引用元件時可以只使用其中一部分參數(shù),不必對元件所有的參數(shù)進行映射。
下面是引用Xilinx的FPGA的延遲鎖相環(huán)〔DLL〕的例子。
............
ARCHITECTURE rtl of pll IS
SIGNAL clk :std_logic;
component clkdll --鎖相環(huán)
port(clkin,clkfb,rst :in std_logic;clk0,clk90, clk180,clk270,clkdv,locked :out std_logic);
end component;
BEGIN
CLK1: clkdll port map(clkin=>clkin,clkfb=>clk,rst=>'0', clk0=>clk,clk90=>clkout );
process(clk)
begin
if(clk'event and clk='1') then
data_out<=data_in;
end if;
end process;
END rtl;
這個程序也選用Xilinx的XC2S50-5QP208,經(jīng)LeonardoSpectrum綜合后,用Xilinx ISE5.1進行map后的結(jié)果如圖2所示,可以看到使用了一個DLL。
RAM的綜合
RAM設(shè)計是Xilinx FPGA的一個特色,按照在芯片內(nèi)的分布情況可以分為分布式RAM和塊狀RAM,分布式RAM分布在每個LC中,可以將一個LC作為16×1的同步RAM使用,也可以將兩個LC聯(lián)合起來作為16×2、32×1的同步RAM或者16×1的雙口RAM使用,塊狀RAM是專用的分布FPGA邊緣的RAM塊。RAM使用時又可以作為ROM,單口RAM、雙口RAM等。如果是原理圖設(shè)計,可以在選擇元件時選擇不同的元件來選擇不同類型的RAM,但是對于用描述語言來進行RAM設(shè)計時,就需要綜合工具的支持,不同的綜合工具,對相同的語句,可能就綜合成不同類型的RAM。LeonardoSpectrum對VHDL的支持達到相當?shù)母叨,除了提供屬性的方法來使用分布式RAM和塊狀RAM外,還可以在設(shè)計時使用不同的描述語句來產(chǎn)生分布式RAM和塊狀RAM。下面是一個綜合成塊狀RAM的例子。
......
ARCHITECTURE rtl of blockram IS
TYPE RAM IS ARRAY ( 0 TO 127 ) OF STD_LOGIC_VECTOR( 7 DOWNTO 0 );
SIGNAL testram :ram;
SIGNAL cc1,cc2 :std_logic_vector(6 downto 0);
SIGNAL addr1,addr2 :integer range 0 to 127;
熱門點擊
- 一種基于CPLD的偽隨機序列發(fā)生器
- 利用XPS工具快速生成Virtex FPGA
- 基于PIC18F系列單片機的嵌入式系統(tǒng)設(shè)計
- 嵌入式Email發(fā)送模塊
- 使用LeonardoSpectrum綜合Xi
- ADSP-TSl01S嵌入式系統(tǒng)的混合編程
- 基于TS101的嵌入式實時操作系統(tǒng)設(shè)計
- 預(yù)測蛋白質(zhì)結(jié)構(gòu)的擬物擬人算法
- 在S3C4510B評估板上移植uclinux
- IEC 61131-3標準與ARM嵌入式控制
推薦技術(shù)資料
- 1200 V CoolSiC MOSFET
- 高帶寬內(nèi)存(HBM)和芯片間互連(ICI)應(yīng)
- 第七代TPU—Ironwood
- Neuralink新款“心靈感
- IR最新功率MOSFET的30
- 全新第4代SiC MOSFET
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究
深圳服務(wù)熱線:13692101218 13751165337
粵ICP備09112631號-6(miitbeian.gov.cn)

深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式