使用LeonardoSpectrum綜合Xilinx FPGA的VHDL程序
摘 要: 本文總結了使用LeonardoSpectrum綜合Xilinx FPGA的VHDL程序應用,以及在VHDL中使用不同類型RAM的方法。
關鍵詞: LeonardoSpectrum;FPGA;VHDL
LeonardoSpectrum 是Mentor Graphics公司設計的功能強大的EPLD/FPGA/ASIC綜合工具,支持大部分EPLD/FPGA廠商的產品。LeonardoSpectrum支持VHDL、Verilog、EDIF的綜合、優化和定時分析,可以運行在Windows 98/2000/NT/XP和HP、SUN 的UNIX平臺上。
LeonardoSpectrum通過名為exemplar的庫,可以在用HDL設計FPGA/EPLD時使用與原理圖設計相同的功能。LeonardoSpectrum對于Xilinx公司的EPLD/FPGA支持尤其完善,使得用HDL的設計在效率和功能上可以和原理圖的設計相當。本文總結了使用LeonardoSpectrum過程一些有用的設計方法。
圖1 全局時鐘使用的map結果
圖2 延遲鎖相環使用map結果
圖3 塊狀RAM的map結果
圖4 分布式RAM的map結果
屬性的使用
在LeonardoSpectrum中,可以在程序中對信號賦予屬性來對綜合結果進行控制。在使用LeonardoSpectrum綜合時,除了LeonardoSpectrum提供的屬性外,可以把Xilinx原理圖設計中的某些元件作為屬性來賦予信號,主要限于雙端口的元件,例如IBUFG,BUFG等等。LeonardoSpectrum所提供的屬性可以參看使用手冊。
如果使用LeonardoSpectrum來綜合,建議調用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,經LeonardoSpectrum綜合后,用Xilinx ISE5.1進行map后的結果如圖1所示,可以看到使用了1個全局時鐘。
元件的引用
在Xilinx的FPGA/EPLD的原理圖設計中需要用到元件庫,元件庫中包含一些特殊功能的元件,例如延遲鎖相環(DLL)、全局時鐘BUF、邊界掃描電路、數字時鐘管理器(DCM)、內置SRAM等。LeonardoSpectrum提供的exemplar庫中的程序包使得設計者可以在VHDL程序中直接引用原理圖庫中所包含的元件。引用元件時,先調用exemplar庫,對要引用的元件按照原理圖庫中的描述進行聲明。引用元件時可以只使用其中一部分參數,不必對元件所有的參數進行映射。
下面是引用Xilinx的FPGA的延遲鎖相環〔DLL〕的例子。
............
ARCHITECTURE rtl of pll IS
SIGNAL clk :std_logic;
component clkdll --鎖相環
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,經LeonardoSpectrum綜合后,用Xilinx ISE5.1進行map后的結果如圖2所示,可以看到使用了一個DLL。
RAM的綜合
RAM設計是Xilinx FPGA的一個特色,按照在芯片內的分布情況可以分為分布式RAM和塊狀RAM,分布式RAM分布在每個LC中,可以將一個LC作為16
評論