<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 牛人業(yè)話(huà) > FPGA研發(fā)之道(20)-片上系統

FPGA研發(fā)之道(20)-片上系統

作者: 時(shí)間:2014-11-23 來(lái)源:網(wǎng)絡(luò ) 收藏

  從最初的占地170平方的第一代ENIAC計算機開(kāi)始,計算機開(kāi)始了不斷集成化、小型化的發(fā)展之旅?,F今在單一芯片內部已經(jīng)能夠集處理器,存儲,各型協(xié)處理器等,從而形成的強大的單芯片的片上系統(),而這些片上系統已存在于生活的方方面面。因此內部支持片上系統,也算不上是新奇的事情了。ALTERA和XILINX已各自推出了各自應用片上系統(領(lǐng)域稱(chēng)之為SOPC,因此其片上系統可以根據業(yè)務(wù)需求來(lái)定義)。

本文引用地址:http://dyxdggzs.com/article/265803.htm

  只需幾K的資源,就能實(shí)現一個(gè)的最小系統,對于工程師來(lái)說(shuō),沒(méi)什么比這個(gè)更有吸引力了。那么,作為一個(gè)片上系統來(lái)說(shuō),其最小系統應該包含哪些:其至少需要三個(gè)部件,執行部件(處理器),程序執行部件(內部存儲器),輸出部件(輸入輸出單元)。(其分別相當于PC上的CPU、內存條,鍵盤(pán)鼠標顯示器)。下圖所示在A(yíng)LTERA的QSYS上實(shí)現NIOS的最小系統所需部件。



  (1) 處理部件:為ALTERA器件中所專(zhuān)有的軟核處理器,而xilinx所對應的為microblaze的軟核。通過(guò)在Qsys的界面工具中提供許多IP,而也提供三個(gè)版本提供使用,分別是高速型,標準型,以及經(jīng)濟型。如果FPGA內部邏輯有限,可選擇的經(jīng)濟型,其占用資源較少。如果需要內部資源豐富又需要運行嵌入式操作系統uclinux等復雜軟件。則建議選擇高速型,而要運行linux等操作系統,則在高速型中配置MMU則是必須的。如無(wú)具體需求,則使用標準型即可。值得一提的是,NIOSII為哈佛型體系結構,即數據和指令分開(kāi),從Qsys可以看出,其接口分為指令接口和數據接口。

  (2) 存儲部件:對于在FPGA內部實(shí)現來(lái)說(shuō),片內的塊RAM就是實(shí)現SOC內部程序與數據的存儲空間。也可以使用片外的存儲區,如片外SRAM或者DDR等。也可以作為程序和數據的存儲空間。對于NIOSII處理器來(lái)說(shuō),只有選取了片內存儲區或者片外存儲區,才能設定程序中斷向量和復位起始位置的存儲區。另外,雖然AVALON總線(xiàn)支持數據總線(xiàn)和地址總線(xiàn)通過(guò)片上互聯(lián)同一接口訪(fǎng)問(wèn)單端口RAM。但建議使用時(shí),例化為雙AVALON接口的雙端口RAM,一則是因為一般存儲區所需RAM深度夠大,一般支持真雙端口RAM,另一方面,數據和指令分開(kāi),能夠提升系統的性能。

  (3) 輸入輸出部件:通常在嵌入式SOC系統中,最常用的輸入輸出部件就是串口(UART)。常常被應用于(打印printf(),scanf())函數的輸入輸出。如果系統設計了串口(一般為SOC系統中所必須的),則例化系統中的支持avalon接口的串口即可,如果系統中不幸沒(méi)有,那么ALTERA公司提供了JTAG-UART接口提供給用戶(hù)輸入輸出交互接口。即通過(guò)復用JTAG下載線(xiàn)來(lái)模擬串口的操作。如果系統中有多個(gè)輸出輸出設備,如有多個(gè)UART,則在編程時(shí),需在BSP的環(huán)境中設定,選擇使用哪個(gè)UART作為系統的輸出。

  使用ALTERA的Qsys工具可以方便的在FPGA上構建SOC系統。只需選擇相應的IP(可以是系統自帶,也可以使用自己構建支持avalon-mm接口的IP)。通過(guò)系統的互聯(lián)從而構成一個(gè)片上系統。圖形化的界面只需通過(guò)avalon總線(xiàn)連接信號將NIOSII和外設連接在一起即可。連接完畢后,還需要下面操作:

  (1) 為每個(gè)外設設定地址,例如上圖中RAM和JTAG-UART,每個(gè)外設都需要一個(gè)地址范圍,可以點(diǎn)擊系統中自動(dòng)地址分配,也可以手動(dòng)分配一個(gè)區間。只有為每個(gè)外設分配地址后(相當于整個(gè)系統的門(mén)牌號),處理器才能根據地址來(lái)訪(fǎng)問(wèn)各個(gè)外設。

  (2) 如外設有中斷,則為外設分配中斷號,也可自動(dòng)或者手動(dòng)完成。如不分配中斷的話(huà),那么處理器訪(fǎng)問(wèn)外設,只有查詢(xún)一種交互方式了。中斷方式使用可以減少處理器的負載。

  在A(yíng)LTERA的QSYS工具中,硬件信息全部存儲在sopcinfo。主要是包括各個(gè)外設的地址信息等,用于產(chǎn)生system.h。也就是說(shuō),作為軟件和硬件的交互的渠道是每個(gè)外設的基地址,中斷,和內部寄存器等信息。系統構建結束后,剩下的就可以軟件編程了,運行在搭建的SOC系統上的第一個(gè)“hello world”的程序。

  對于現在FPGA上的SOC設計,廠(chǎng)商為了其方便易用,做了大量的工作,只需按照其指南一步步,就可以實(shí)現相應的設計,但同時(shí),也限制了對其基本原理的深入的理解。什么事情都有其兩面性,作為FPGA工程師,SOC的原理則應該能夠重點(diǎn)關(guān)注,這樣不論是ALTERA還是XILINX其基本原理也是一致的。如不使用廠(chǎng)家的處理器核(NIOSII、microblaze),也可以使用其他的軟核(如51等,ARM)在FPGA上實(shí)現SOC系統。只不過(guò)原來(lái)工具做的工作,就需要手動(dòng)來(lái)完成了。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

fpga相關(guān)文章:fpga是什么




關(guān)鍵詞: FPGA SOC NIOSII

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>