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è)計相當(dāng)。本文總結(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的支持達到相當(dāng)?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;
BEGIN
......
process(clkout) --從RAM中讀出數(shù)據(jù)
begin
if(clkout'event and clkout='1') then
data_out<=testram(addr2);
end if;
end process;
END rtl;
該程序也選用Xilinx的XC2S50-5QP208,經(jīng)LeonardoSpectrum綜合后,用Xilinx ISE5.1進行map后的結(jié)果如圖3所示,可以看到生成了塊狀RAM。
下面程序是綜合成分布式RAM的例子。
......
ARCHITECTURE rtl of disram 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;
BEGIN
......
process(clkout) --從RAM中讀出數(shù)據(jù)
begin if(clkout'event and clkout='1') then
if(ramsel='1') then data_out<=testram(addr2); end if; end if;
end process;
END rtl;
選用XC2S50-5QP208,經(jīng)LeonardoSpectrum綜合后,用Xilinx ISE5.1進行map后的結(jié)果如圖4所示,可以看到生成了分布式雙口RAM。
比較上面兩段程序,可以看到它們的差別就在于生成分布式RAM的程序中,數(shù)據(jù)輸出時有一個selram信號,也就是說,如果直接用時鐘讀出RAM中的數(shù)據(jù),就綜合成塊狀RAM;如果是用帶使能的方式輸出RAM中的數(shù)據(jù),就綜合成分布式RAM。
結(jié)語
綜上所述, LeonardoSpectrum對于用VHDL寫的用于Xilinx FPGA的程序支持是非常到位的,可以充分利用Xilinx的優(yōu)勢,用語言設(shè)計出與原理圖設(shè)計相當(dāng)功能的程序。
- 使用Le(5699)
- DL程序(5404)
相關(guān)推薦
Vivado 高層次綜合

Xilinx ISE Design Suite 14.2 安裝圖解


Xilinx FPGA案例學(xué)習(xí)之Vivado設(shè)計綜合約束


2NBS14-RG3-221331LF
2NBS14-RJ1-472LF
2NBS16-RF1-472LF
2NBS16-TF1-472LF
2NBS16-TF3-221331LF
2NBS16-TJ1-472LF
2NBS8-RF1-472LF
2NBS8-RG3-221331LF
2NBS8-RJ1-472LF
2NBS8-TF1-472LF
2NBS8-TF3-221331LF
2NBS8-TG1-472LF
2NBS8-TJ1-472LF
LeonardoSpectrum Level 3Synplify 6.0以及Synopsys Express3.4三種綜合工具對比分析,哪個好?
Xilinx 9.2i實施不起作用
Xilinx FPGA入門連載13:PWM蜂鳴器驅(qū)動之綜合、實現(xiàn)與配置文件產(chǎn)生
Xilinx FPGA無痛入門,海量教程免費下載
Xilinx ISE中的報告未更新
Xilinx Platform Cable USB
xilinx EDF已經(jīng)綜合過的網(wǎng)表文件怎樣添加到Vivado工程中?
FPGA開發(fā)工具----ISE 開發(fā)工具、簡介、作用
FPGA的邏輯仿真以及邏輯綜合的一些原則
FPGA設(shè)計高級技巧Xilinx篇
FPGA高級時序綜合教程
GSM給您解釋解釋XILINX XST綜合的選項的含義(完成)
ISE 自帶可綜合模塊的問題
ISE 自帶可綜合模塊的問題
Synplify 綜合 UDP 模塊
verilog 循環(huán)以及@(clock)的綜合
介紹FPGA的綜合(轉(zhuǎn))
基于 FPAG xilinx vivado 仿真模式介紹
如何使用Xilinx工具進行自下而上的合成?
如何使用DCNXT實現(xiàn)物理綜合?
如何理解Xilinx的RTL圖
如何設(shè)計完整的FPGA?需要經(jīng)過哪些流程?
是否有Xilinx或任何其他實例提供的編碼風(fēng)格指南?
是否有可能在不修改代碼的情況下按順序操作Xilinx綜合選項?
有關(guān)verilog的綜合
物理綜合與優(yōu)化的優(yōu)點有哪些?流程是怎樣的?
物理綜合期間未定義的符號
程師分析實例,帶你走近Xilinx FPGA設(shè)計[轉(zhuǎn)]
請問Xilinx FIFO支持virtex5嗎?
UART 4 UART參考設(shè)計,Xilinx提供Verilo

usb xilinx源代碼

FPGA CPLD設(shè)計工具——Xilinx ISE使用

在PLD開發(fā)中提高VHDL的綜合質(zhì)量

在PLD開發(fā)中提高VHDL的綜合質(zhì)量


在PLD開發(fā)中提高VHDL的綜合質(zhì)量


Xilinx宣布收購高層綜合技術(shù)領(lǐng)先的AutoESL

Xilinx FPGA開發(fā)實用教程(第2版)-徐文波、田耘


Xilinx_FPGA系列入門教程(二)—Xilinx_FPA

Xilinx_FPGA系列入門教程(一)—如何搭建Xilinx

關(guān)于高阻態(tài)和OOC(out of context)綜合方式

威視銳&Xilinx

Xilinx FPGA開發(fā)工具總結(jié)

設(shè)計輸入、C 仿真、C 綜合以及 C/RTL 協(xié)同仿真

Vivado使用技巧分享:OOC綜合技術(shù)運行流程


Xilinx 7系列FPGA介紹

NBS橡膠磨耗試驗機的用途都有哪些

FPGA的設(shè)計流程指南詳細資料說明

FPGA的綜合詳細教程

Xilinx FPGA時序約束設(shè)計和分析

評論