国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

采用EEPROM對大容量FPGA芯片數據實現串行加載

發布時間:2009-3-18 09:44    發布者:李寬
關鍵詞: eeprom , FPGA , 串行 , 加載 , 芯片
自大規模現場可編程邏輯器件問世以來,先后出現了兩類器件,一類是基于SRAM體系結構的FPGA系列,如XILINX公司的4000系列和最新的Virtex系列;另一類是基于fastFLASH技術的CPLD器件,如XILINX公司的9500系列和Lattice公司的ispLSxx系列芯片。FPGA具有容量大、設計資源豐富、片內ROM及RAM設計靈活等特點[1],但是它們需要在每次上電時進行數據加載。目前實現加載的方法有以下三種:①采用PROM并行加載;②采用專用SROM串行加載;③采用單片機控制實現加載。第一種方式需要占用較多的FPGA管腳資源,雖然這些管腳在加載完成后可用作一般I/O口,但在加載時不允許這些管腳有其他任何外來信號源;另外數據存儲器PROM與FPGA之間的大量固定連線如8位數據線以及大量訪問PROM的地址線等,使得PCB設計不便。但是第一種方式有一個有利的方面,即PROM的容量較大、容易購置、價格低、技術支持(編程器)較好。第二種方式情況剛好與第一種方式相反,即占用資源少、PCB布板方便,但是容量小、價格較高、兼容性差。第三種方式采用單片機控制,由PROM中讀取并行數據,然后再串行送出。由于涉及到單片機編程,對于開發者來說較為不便;另外,如果單片機僅用來實現該任務,較為浪費硬件資源。CPLD的一個最大優點是采用計算機專用開發工具,通過JTAG口直接一次性實現編程數據加載,并永久保留,除非進行再次編程(與GAL器件相似)。該類器件比較適合在實驗室內進行現場調試,但是由于其數據的加載必須通過計算機,因此對于從事野外作業者來說會產生不便。
  通過上述比較,并結合實際工作情況,我們認為采用串行數據加載比較方便、可靠(這種可靠性得益于FPGA與SROM之間較少的接口線)。但隨著FPGA規模的不斷升級,其CONFIG數據量越來越大,截止到本文寫作時,CONFIG數據量最大已到6MBIT,雖然XILINX公司有相關的XC17X系列SROM提供使用,但皆為一次性芯片[2]、開發成本較高、代理商供貨周期長、價格較高,這給FPGA的應用及普及帶來很大的障礙。我們曾使用過AT&T公司的ATT17系列電可擦除SROM,但是該類SROM芯片能與XILINX系列FPGA芯片實現接口的種類不多,且容量小。由于種種原因,其價格往往是同樣存儲容量的EEPROM的五、六倍,甚至更高,并且來源困難。那么能不能結合并行加載與串行加載的優點,從而解決大容量FPGA數據加載的問題呢?我們在仔細分析了串行加載機制后,認為采用EEPROM作為數據存儲器,經過可控的并-串轉換,應該可以實現數據加載。下面以XILINX公司Virtex系列XCV100芯片為例,采用ATMEL公司1兆位的AT29C010A進行數據存儲,采用XILINX公司9500系列XC95108芯片作為加載控制器件進行設計。
1 原理設計
  原理性MasterSerial模式串行加載時序如圖1所示。在該加載模式中,比較重要的幾個信號為/INIT、CCLK、DATAIN、DONE。/INIT表示FPGA芯片上電時或者當/PROGRAM信號為低時FPGA內部數據初始化過程,并作為外送信號給數據加載控制器件作為復位之用。當/INIT信號躍為高電平時,CCLK開始啟動。加載數據DATAIN在CCLK的上升沿打入,與通用串行通訊相類似,加載數據流也有開始位與結束位,且以數據幀的方式接收。一旦發生錯誤,FPGA立即停止接收數據,并將/INIT信號置為低電平,因此該信號又稱為錯誤指示信號。當數據全部接受并驗證無誤后,FPGA將DONE信號置為“1”[3]。



  在分析了FPGA加載數據流特性后,可以得出這樣一個結論:保證CCLK與DATAIN之間的嚴格同步與連續性,就可以實現加載。基于此結論,在生成加載數據格式時,產生單片SROM串行格式,對于XILINX公司的FPGA系列,該格式為.MCS文件格式;然后用ALL07編程器以INTELHEX數據格式將其寫入EEPROM中。余下的工作是在CCLK、/INIT、DATAIN的控制下完成并-串轉換。該控制過程采用一片CPLD之95系列XC95108芯片來承擔,在設計容量上采用一片XC9536即可完成,之所以采用XC95108是因為其尚需要完成其他任務。其原理框圖如圖2所示。



2 并-串轉換時序設計
  在時序設計上,關鍵在于要保持DATAIN加載數據的連續性、DATAIN與CCLK加載時鐘的同步性以及EEPROM訪問地址的復位問題。對于復位問題,采用上電時FPGA產生的/INIT信號對95108內部的EEPROM地址發生器復位。這樣做的原因是/INIT與FPGA之CCLK時鐘產生有著同步關系,但同時也默認上電加載是一次成功;在考慮串行DATAIN數據的連續性時,采用兩組移位寄存器,設定它們為R_shiftA和R_shiftB,當R_shiftA在進行移位操作時,R_shiftB由EEPROM中讀入八位并行數據,反之亦然;為保持DATAIN與CCLK時鐘的同步性,所有上述操作都以CCLK為同步時鐘,值得注意的是,由于DATAIN串行數據是在CCLK的上升沿打入FPGA,因此我們給予XC95108芯片設計的運轉時鐘是經過反相的CCLK時鐘,這樣就保證了CCLK與DATAIN的時間關系。
  以下是為該加載設計的VHDL硬件編程語言設計程序[4][5],其中的計數器及移位寄存器模塊用F2.1I設計軟件之LogicBlox模塊產生。整個程序經F2.1I開發軟件仿真、編譯成功后,經JTAG編程電纜寫入XC95108芯片。加電后便加載成功,經多次加電實驗,成功率為100%。
  雖然該程序是針對XCV100芯片及AT29C010A EEPROM設計的,但對于其他FPGA及EEPROM芯片同樣適用,不同的是針對不同容量的EEPROM,應改變其地址計數器的位數。
  library IEEE;
  use IEEE.std_logic_1164.all;
  use ieee.std_logic_arith.all;
  use ieee.std_logic_unsigned.all;
  entity v10sload is
       port (
       pDATA: in STD_LOGIC_VECTOR(7 downto 0);
       pADDRESS:inout STD_LOGIC_VECTOR(16
                                            downto 0);
           CCLKIN: in STD_LOGIC;
          RESET:in STD_LOGIC;
           DATAIN:out STD_LOGIC
              );
  end v10sload;
  architecture v10sload_arch of v10sload is
  signal:loadin,CE,nCE,CCLK8,nRESET,nCCLK,aDATAIN,
              bDATAIN:std_logic;
  signal clkenable,CCLK:std_logic;
  signal ppDATA:std_logic_vector(7 downto 0);
  component clk_div8
              PORT(
    CLOCK,ASYNC_CTRL: IN std_logic;
    CLK_OUT: OUT std_logic);
end component;
component R_shift8
  PORT(
     D_IN: IN std_logic_vector(7 DOWNTO 0);
     LOAD: IN std_logic;
     CLK_EN: IN std_logic;
     CLOCK: IN std_logic;
     LS_OUT: OUT std_logic);
end component;
component BUFG
  port(I:in std_logic; O:out std_logic);
end component;
begin
    -------------------------------     
--data-loading function statements here
nRESET<=not RESET;
init_data:process(RESET)
begin
  if(RESET='0') then
    ppDATA<=″00000000″;
    else ppDATA<=pDATA;
end if;
end process init_data;
L0:BUFG     port map(I=>CCLKIN,O=>CCLK);
nCCLK<=not CCLK;
L1:counter17  portmap
    (CLOCK=>CCLK8,ASYNC_CTRL=>nRESET,
     Q_OUT=>pADDRESS);
L2:clk_div8  portmap
  (CLOCK=>nCCLK,ASYNC_CTRL=>nRESET,
    CLK_OUT=>CCLK8);
nCE<=not pADDRESS(0);
CE<=pADDRESS(0);
clkenable<='1';
L3:R_shift8    portmap
    (D_IN=>ppDATA,LOAD=>nCE,CLK_EN=>
                  clkenable,CLOCK=>nCCLK,
    LS_OUT=>aDATAIN);
L4:R_shift8    portmap
    (D_IN=>ppDATA,LOAD=>CE,CLK_EN=>
    clkenable,CLOCK=>nCCLK,
    LS_OUT=>bDATAIN);
process(aDATAIN,bDATAIN,CE)
begin
  if(CE='1') then DATAIN<=aDATAIN;
  else DATAIN<=bDATAIN;
end if;
end process;
end v10sload_arch;
本文地址:http://www.qingdxww.cn/thread-2985-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 了解一下Microchip強大的PIC18-Q24 MCU系列
  • 安靜高效的電機控制——這才是正確的方向!
  • 想要避免發生災難,就用MPLAB® SiC電源仿真器!
  • 5分鐘詳解定時器/計數器E和波形擴展!
  • 貿澤電子(Mouser)專區

相關在線工具

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99热国产这里只有精品99 | 深夜福利国产精品亚洲尤物 | 9984四虎永久免费网站 | 一区二区在线观看视频 | 国产精品尹人在线观看免费 | 欧美四虎精品二区免费 | 免费老色鬼永久视频网站 | 成人免费无毒在线观看网站 | 五月天堂婷婷 | 丁香婷婷在线视频 | 女人18一级毛片免费观看 | 成人精品视频一区二区三区尤物 | 热re99久久国产精品 | 99久久精品免费精品国产 | 国产高清在线视频一区二区三区 | 黄网站在线观看永久免费 | 无限看片动漫的视频在线观看免费 | 精品一区二区三区高清免费不卡 | 日韩在线一 | 免费人成在线观看网站品爱网日本 | 97视频在线观看免费视频 | 欧美 日韩 成人 | 噼里啪啦免费视频高清观看 | 99精品热线在线观看免费视频 | 亚洲高清网站 | 国产91精选在线观看麻豆 | 中国一级毛片特级毛片 | 九热 | 日本jizz强视频69视频 | 日韩a一级欧美一级在线播放 | 国产亚洲精aa在线观看不卡 | 一级毛片大全 | 高清一级毛片一本到免费观看 | 国产成人禁片免费观看 | 视频久久久 | 日韩欧美一二三 | 久久国产精品女 | 日本韩国经典剧情片免费在线 | 一二三四日本手机高清视频 | wwwxx免费| 亚洲精品小视频 |