1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      使用LeonardoSpectrum綜合Xilinx FPGA的VHDL程序

      更新時間: 2007-10-11 09:15:20來源: 粵嵌教育瀏覽量:1370

        摘   要: 本文總結了使用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過程一些有用的設計方法。

        屬性的使用
         
        在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×1的同步RAM使用,也可以將兩個LC聯合起來作為16×2、32×1的同步RAM或者16×1的雙口RAM使用,塊狀RAM是專用的分布FPGA邊緣的RAM塊。RAM使用時又可以作為ROM,單口RAM、雙口RAM等。如果是原理圖設計,可以在選擇元件時選擇不同的元件來選擇不同類型的RAM,但是對于用描述語言來進行RAM設計時,就需要綜合工具的支持,不同的綜合工具,對相同的語句,可能就綜合成不同類型的RAM。LeonardoSpectrum對VHDL的支持達到相當的高度,除了提供屬性的方法來使用分布式RAM和塊狀RAM外,還可以在設計時使用不同的描述語句來產生分布式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中讀出數據
         begin
        if(clkout'event and clkout='1') then
         data_out<=testram(addr2);
          end if;
         end process;
        END rtl;

        該程序也選用Xilinx的XC2S50-5QP208,經LeonardoSpectrum綜合后,用Xilinx ISE5.1進行map后的結果如圖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中讀出數據
         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,經LeonardoSpectrum綜合后,用Xilinx ISE5.1進行map后的結果如圖4所示,可以看到生成了分布式雙口RAM。

        比較上面兩段程序,可以看到它們的差別就在于生成分布式RAM的程序中,數據輸出時有一個selram信號,也就是說,如果直接用時鐘讀出RAM中的數據,就綜合成塊狀RAM;如果是用帶使能的方式輸出RAM中的數據,就綜合成分布式RAM。

        結語
         
        綜上所述, LeonardoSpectrum對于用VHDL寫的用于Xilinx FPGA的程序支持是非常到位的,可以充分利用Xilinx的優勢,用語言設計出與原理圖設計相當功能的程序。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 中国人手机在线观看 | 宅男在线国产精品 | 一区二区三区殴美在线播放 | 日本中文乱码字幕在线网站 | 亚洲天堂视频在线观看不卡的 | 亚洲一区二区三区在线看 |