在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

FPGA與嵌入式CPU的Local Bus接口調試

FPGA技術江湖 ? 來源: 網絡交換FPGA ? 2023-01-10 10:25 ? 次閱讀

Local Bus總線又稱為CPU總線,根據高低位地址線序的差異,又可分為Motorola CPU總線和Intel CPU總線。 古老的CS51單片機就是Intel CPU總線的典型代表,而我們常用的Power PC就是Motorola CPU總線架構,它是從60X總線衍變過來的(60X總線支持64、32、16、8四種可選位寬模式)。 本文以一款Power PC CPU通過Local Bus讀寫FPGA內部寄存器或RAM以及中斷響應為例,為大家介紹開發過程中的注意事項。

poYBAGO8zNaAbnbsAADkeFLZl9s707.gif

記得在HINOC1.0的時候,FPGA樣機上采用Intel XScale PXA270(ARM CPU)芯片與FPGA芯片互連,采用的接口時序就是Local Bus總線的時序,該時序與CPU與外掛異步SRAM接口時序一樣,這樣HINOC芯片就可以看做是ARM CPU的一個外設,可以分配可配置的寄存器或RAM等訪問空間。 具體時序圖如下圖所示,總線包括地址、片選、讀/寫信號,下圖是簡單的讀時序。 注意,所謂異步,就是CPU接口總線與FPGA相應接口是不同步的,也就是CPU送給FPGA的信號中不包括時鐘信號,FPGA需要通過自己內部的時鐘信號去采CPU接口的地址、數據等信號,同步后才能使用。 如下圖中的CPU讀FPGA時序,CPU給出度地址和讀控制信號后,等待tAA時間后才能從數據總線上取到正確的有效的數據,這個tAA時間長短是可以通過設置PXA270中的寄存器來進行調整的。

poYBAGO8zNaAEheRAAAr_JCsXvU519.png

poYBAGO8zNaAM3HIAAAjiUa61q4662.png

印象比較深刻的是,上面時序圖在FPGA側觀察時,就能感受到CPU的效率是如何之慢了,CPU完成一次讀寫FPGA內部寄存器的操作,對應的FPGA常常已經過了幾十個時鐘周期,所以效率較低,好在一些改進的SoC總線如AXI等還有Burst等類似于DMA之類的連續讀寫操作模式。

poYBAGO8zNaANYYsAABLMqfBhGo829.png

在搭建仿真環境時,上圖中的CPU行為就可以簡化為簡單的讀、寫兩個task(如下圖)。 在FPGA側的電路設計代碼,則把CPU送過來的信號采用打兩拍等方式同步后進行地址譯碼等再交給后續的模塊使用。

pYYBAGO8zNaAML3TAAIUdPkXU0M597.jpg

目前,這種總線使用的已經比較少了。 但在很多專用領域,如航空航天等領域,一些國產的CPU等仍然使用類似的總線時序。 簡單、可靠,穩定。

調試環境介紹

硬件開發板:AX7103; CPU開發板:p2020; 驅動操作系統Vxworks

vxworks操作系統下CPU和FPGA的硬件連接關系如下圖1所示,采用Local Bus總線接口。

poYBAGO8zNaANGIIAAAlNtGHnJ4280.png

圖1 CPU和FPGA的硬件連接

硬件側沒有開發板與p2020 Local Bus的50pins直接相對接,而驅動側需要開發、測試Local Bus驅動,因此需要創造調試環境,利用AX7103開發板的68個引腳,將Local Bus總線相關的關鍵引腳(37pins=16pins_addr+16pins_data+3pins_csn+1pin_oen+1pin_ wen)以及中斷信號定義到EX_IO1和EX_IO2上,再根據p2020原理圖與接插件J5、J4相匹配,調試環境如下圖2所示(略丑,只做原型功能驗證)。 圖示J5為p2020接插件(Local Bus總線相關信號); J4為p2020接插件(硬線中斷、GND信號); EX_IO1為Local Bus總線地址、片選和讀寫使能管腳; EX_IO2為數據、中斷管腳。

注意:兩塊開發板的電平標準要一致,否則不能通過杜邦線直連,另外建議兩塊開發板杜邦線共地相連。

pYYBAGO8zNaAEeSwAAGvCnPsAdg695.jpg

圖2 硬件板和CPU板實際調試環境

概述

前面介紹過FPGA與CPU進行數據交互時使用的接口是PCIe接口等接口,在TSN或TTE系統里,PCIe接口常常用在端節點上,Local Bus接口常用于交換機內CPU與FPGA進行數據交互的接口。 本文只講述Local Bus調試歷程。 對于硬件側來說,Local Bus相比于PCI、PCIe開發簡單些,只需要完成CPU內存地址與硬件寄存器、RAM地址的映射,讀/寫使能信號和片選信號的時序,此次Local Bus開發是硬件側建立一個Local Bus測試工程配合Local Bus驅動調試寄存器讀寫功能以及中斷功能。

2.1.數據讀寫操作

關于寄存器讀寫功能。 Local Bus的簡介網上有參考價值的就是這個鏈接:https://wenku.baidu.com/view/aeca83593b3567ec102d8a80.html?from=search, 因為局部總線簡單,也沒有什么可介紹的,理論部分就見鏈接,我這里就附上關鍵信號的讀寫時序圖,如下圖3,圖4所示。 同樣的Local Bus接口在不同的CPU處理器地址和數據位寬不一致,信號也會有一些不一致,比如:BM3803處理器中地址數據線未復用,數據位寬32bit(雙字操作); p2020處理器中數據線LAD復用(通過LALE信號鎖存高11bit的地址,如果只用16bit的地址時可以不接LALE),數據位寬16bit(雙字節操作)。

poYBAGO8zNaAGGh0AAAzBRAn-Sk201.png

pYYBAGO8zNaAZ4kEAAAyiPQNzeE407.png

pYYBAGO8zNaAH4nLAAAxpV32pPw745.png

2.2.中斷功能

中斷的話采用傳統的硬線中斷,p2020原理圖可知,除了irq3已經被占用,另外6個硬線中斷(irq0/1/2/4/5/6)可供外設使用,且均在J4接插件位置處。 由p2020的Datasheet可以知道p2020內部中斷有64類,外部中斷有12類,而我們調試使用的是外部中斷中的irq1。

調試歷程

3.1.數據讀寫操作

調試伊始,通過p2020的原理圖可以看出CS0和CS1分別給了內部的nand_flash以及nor_flash使用,另外輸出3位的片選信號(CS2,CS3和CS4),說明最多可以掛8片局部總線外設,,這些外設(含*_flash)共用數據線、地址線以及讀寫使能。 第一步就得先知道驅動使用了哪個片選信號,驅動也是摸索,驅動代碼寫著只使用了CS4,屏蔽了原來例程中的CS2,通過硬件側抓cpu_csn[2:0]發現,cpu_csn[0]也會存在低片選狀態,后經驅動修改,先保留使用CS2,這樣驅動每次讀寫操作時都能觸發“cpu_csn[2:0]==3’b110”。 CPU板將對地址區間0xf1000_0000~0xf1000_ffff(128KB)進行讀寫操作時會拉低CS2,映射到硬件側就是對寄存器/RAM的讀寫了。

測試寫功能,在CPU啟動后,驅動會給內存地址0xf100_0118處寫16‘h5555,如下圖5所示,先給出寫地址,然后拉低片選信號,幾乎同時拉低了寫使能信號,這樣數據就從CPU寫入到FPGA了。

pYYBAGO8zNaAcflKAAB3zA4twPw038.jpg

圖5 板級寫操作

與寫操作的簡單相比,問題都出在了讀操作,我們也同樣地將AX7103和p2020的讀使能線接好(地址、數據和片選信號先接好了),發現此時CPU不能啟動了,但是將此信號接到未使用的EX_IO上時CPU可以正常啟動,說明讀使能信號干擾了CPU的啟動,可是,cpu_oen和cpu_wen屬性是一樣的,input到FPGA內部, 不存在輸出到CPU導致不能啟動,,,查看p2020的datasheet發現p2020上的LGPL2信號有兩重定義:

1、Local Bus的讀使能cpu_oen;

2、配合LBCTL、LALE信號配置e500核pll時鐘占空比。

懷疑是系統啟動后短時間內FPGA側的cpu_oen電平影響到CPU側的LGPL2,為此,我們將讀使能改為inout信號,在CPU啟動后的10s內為高阻態,起著隔離作用,而10s后p2020的bootrom也加載差不多可以bootup了,然而實際測試下來的結果是CPU依舊不能正常啟動。

我們把所有的杜邦線完全拔掉,只保留讀使能線的連接,發現CPU可以正常啟動,此時說明FPGA側的讀使能電平并沒有影響到CPU側的啟動,為了具體定位到哪一個信號,我們再次基礎上,把線一點一點接上去,最后接完了讀使能線、寫使能線,片選線以及地址線后,CPU板可以正常bootup而且FPGA能抓到正常的讀寫(只是看不到讀寫數據)時序, 插上了數據線后發現CPU就不能啟動了,至此,總算定位到問題出在哪了,為此,FPGA側第一次修改,做簡單的延遲處理,數據線一直處于20s的高阻態(此時CPU可以進行Local Bus寫操作),等到bootup后,才使能數據的讀出,這樣處理其實很笨拙,但是確實能解決CPU不能正常啟動的問題,可治標不治本/允悲/,畢竟刻意的延遲不靠譜。

/**第一次修改/

//rst_done只有20s后才為1,在此之前cpu_data處于高阻

分配cpu_data =((cpu_oen==1'b0)&&(rst_done==1'b1)) ?cpu_rdata : 16'bz;

分配cpu_wdata = cpu_data ;

/*******************************/

靈感一現。。。 FPGA側在“assign cpu_data =(cpu_oen==1'b0) ? cpu_rdata : 16'bz; ”只是多加了一條約束條件“(rst_done==1'b1)”就能讓CPU啟動,說明在CPU啟動之初,cpu_oen滿足低使能導致cpu_data有輸出干擾到CPU側的數據線,,,本文之初提及p2020內部還有nand_flash和nor_flash,在p2020啟動的時候要從這些flash里讀寫數據,也拉低了cpu_oen ,此時Local Bus讀出的是默認值16’h0,而本應該從*_flash里讀出一些有用的值被16’h0覆蓋。 為了驗證這種猜想,我將數據信號的代碼做第二次修改。

/**第二次修改/

//CPU只有片選CS_4了localbus后FPGA才會將cpu_rdata輸出,否則高阻.

assign cpu_data =((cpu_oen==1'b0)&&(cpu_csn[2]==1'b0)) ?cpu_rdata : 16'bz;

分配cpu_wdata = cpu_data ;

/*******************************/

這樣修改后CPU正常啟動,因為p2020啟動之初,會讀*_flash,雖然拉低了cpu_oen,但是選通并非CS2,故此時FPGA的cpu_data保持高阻,直到片選成功且讀使能低有效才將讀數據輸出。 最終調試正確的板級讀操作時序如下圖6所示。

pYYBAGO8zNaAEeA8AACelsmtoUg765.jpg

圖6 板級讀操作

3.2.硬中斷

p2020處理器的中斷分為外部中斷和內部中斷,我們使用的是外部中斷1。 在Vxworks下,處理器外部中斷向量從0開始編號,故分配給外部中斷1的中斷向量為1。 首先,在BSP中將中斷向量與設備綁定,并注冊到hcfDevice設備列表中; 然后,在驅動中初始化并使能中斷,即可收到來自外部中斷1引腳的中斷信號。

需要注意的是,下圖7是p2020datasheet關于中斷irq的描述:為高時置中斷,為低時不產生中斷,然而實際板級測試發現,irq為低時有效,產生硬線中斷。

pYYBAGO8zNaAM9yFAAFqXSf3wL0242.jpg

圖7 p2020中斷irq描述

當驅動收到中斷后,需要對硬線中斷進行復位,參考PCIe總線中INTa中斷操作(干貨! 實測VxWorks響應PCIe中斷的最小時間間隔),我們定義0x110寄存器為中斷寄存器,驅動往0x110第[15]位寫1再寫0時硬件將硬線中斷信號重新拉回高電平復位狀態,中斷時序如下圖8所示。

pYYBAGO8zNaAXe_5AAC8FBgab20575.jpg


圖8 中斷時序

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1629

    文章

    21742

    瀏覽量

    603539
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10868

    瀏覽量

    211844
  • 接口
    +關注

    關注

    33

    文章

    8610

    瀏覽量

    151213
  • 總線
    +關注

    關注

    10

    文章

    2882

    瀏覽量

    88106
  • locale
    +關注

    關注

    0

    文章

    11

    瀏覽量

    1180

原文標題:FPGA與嵌入式CPU的Local Bus接口調試

文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術江湖】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    嵌入式CPU指令Cache的設計與實現

    針對嵌入式CPU 指令處理速度與存儲器指令存取速度不匹配問題,本文基于FPGA 設計并實現了可以有效解決這一問題的指令Cache。根據嵌入式五級流水線
    發表于 08-05 14:27 ?36次下載

    FPGA嵌入式系統USB接口設計

    FPGA嵌入式系統USB接口設計 摘要:設計基于FPGA的IP-BX電話應用系統,用于傳統的電話網絡(PSTN)與PC機之間的接口連接。
    發表于 04-03 10:52 ?1920次閱讀
    <b class='flag-5'>FPGA</b>的<b class='flag-5'>嵌入式</b>系統USB<b class='flag-5'>接口</b>設計

    嵌入式系統的遠程調試

      1 基本方法   圖1(a)是傳統的嵌入式調試方法:主機PC通過串口與從機嵌入式系統相連,接收從嵌入式系統發來的調試信息并向
    發表于 08-30 10:23 ?1035次閱讀
    <b class='flag-5'>嵌入式</b>系統的遠程<b class='flag-5'>調試</b>

    嵌入式應用中的能耗調試技術

    嵌入式應用中的能耗調試技術
    發表于 02-12 17:28 ?907次閱讀
    <b class='flag-5'>嵌入式</b>應用中的能耗<b class='flag-5'>調試</b>技術

    嵌入式CPU軟核綜述

    隨著FPGA 和SoPC(System on Programmable Chip)技術的迅速發展,基于 FPGA嵌入式系統得到了廣泛的研究和應用。該文針對目前比較有影響和特點的4 款嵌入式
    發表于 06-07 18:35 ?53次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>CPU</b>軟核綜述

    基于FPGA嵌入式CPU的VHDL建模和設計

    目前,基于FPGA嵌入式CPU核的設計已成為SOC設計的重要部分.提出一種嵌入式CPU核的VHDI 行為建模方法,與傳統的基于電路結構建
    發表于 06-27 16:00 ?75次下載
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>嵌入式</b><b class='flag-5'>CPU</b>的VHDL建模和設計

    一種帶Cache的嵌入式CPU的設計與實現

    基于FPGA平臺實現了嵌入式RISC CPU的設計。根據項目要求,實現指令集為MIPS CPU指令集的一個子集,分析指令處理過程,構建了嵌入式
    發表于 09-26 14:24 ?1254次閱讀
    一種帶Cache的<b class='flag-5'>嵌入式</b><b class='flag-5'>CPU</b>的設計與實現

    嵌入式Linux下CAN接口調試

    CAN(Controller Area Network)總線是嵌入式設備最為常用的接口之一,常用于汽車以及工業自動化等嵌入式領域,因此本文就基于嵌入式Linux演示使用CAN總線進行通
    發表于 04-29 16:40 ?3277次閱讀

    使用ARM核設計實現嵌入式CPU的AHB接口說明

    本文分析了基于芯核的嵌入式CPU 設計的特點,提出了設計基于ARM 核的嵌入式CPU內AHB 接口存在的空洞問題。結合體系的設計,給出了通過
    發表于 10-18 16:13 ?3次下載
    使用ARM核設計實現<b class='flag-5'>嵌入式</b><b class='flag-5'>CPU</b>的AHB<b class='flag-5'>接口</b>說明

    嵌入式軟件的開發流程_嵌入式軟件的調試

    本文首先介紹了嵌入式軟件的發展,其次闡述了嵌入式軟件的開發流程,最后介紹了嵌入式軟件的調試
    發表于 08-31 16:02 ?6307次閱讀

    如何實現嵌入式系統遠程調試

    嵌入式系統隨著目前科技的發展,正逐步融入人們的生活中。對于嵌入式系統,我們應該有所了解。就專業人員而言,他們對嵌入式系統早已駕輕就熟。為增進大家對嵌入式系統的認識,本文將對
    的頭像 發表于 11-22 11:55 ?5356次閱讀
    如何實現<b class='flag-5'>嵌入式</b>系統遠程<b class='flag-5'>調試</b>

    嵌入式LINUX系統內核和內核模塊調試

    嵌入式LINUX系統內核和內核模塊調試(嵌入式開發和硬件開發)-嵌入式LINUX系統內核和內核模塊調試? ? ? ? ? ? ? ? ?
    發表于 07-30 13:55 ?10次下載
    <b class='flag-5'>嵌入式</b>LINUX系統內核和內核模塊<b class='flag-5'>調試</b>

    基于FPGA嵌入式硬核的PCIExpress總線接口設計與驗證

    基于FPGA嵌入式硬核的PCIExpress總線接口設計與驗證(嵌入式開發架構)-該文檔為基于FPGA
    發表于 07-30 15:23 ?7次下載
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>嵌入式</b>硬核的PCIExpress總線<b class='flag-5'>接口</b>設計與驗證

    fpga嵌入式

    FPGA(現場可編程門陣列)不是嵌入式系統,但FPGA嵌入式系統中有著重要的應用。
    的頭像 發表于 03-14 17:19 ?2329次閱讀

    嵌入式fpga是什么意思

    嵌入式FPGA是指將FPGA技術集成到嵌入式系統中的一種解決方案。嵌入式系統是一種為特定應用而設計的計算機系統,它通常包括處理器、內存、外設
    的頭像 發表于 03-15 14:29 ?1263次閱讀
    主站蜘蛛池模板: 2018天天干天天射| 国产色片| 欧美成人免费夜夜黄啪啪| 久久夜视频| 国产tube| 欧美很很干| 性色视频免费| 污污的黄色小说| 男男憋尿play按小腹| 福利片午夜| 亚洲成在线| 亚洲3级| 四虎影院网站| 亚洲人成网站在线观看妞妞网| 午夜免费观看| 天天在线综合网| 免费在线观看a视频| 天天爽夜夜爽人人爽曰喷水| 天天摸天天躁天天添天天爽| 黄色日屁| 一区二区三区在线免费| 四虎黄色网| 爽a中文字幕一区| 一级a爰片久久毛片| 色中文网| 四虎成人欧美精品在永久在线| 国产精品午夜自在在线精品| 亚洲国产情侣偷自在线二页| 色老头在线官方网站| 精品久久中文网址| 午夜在线观看免费高清在线播放| 成人99国产精品一级毛片| 新天堂网| 爱插综合网| 久久99热精品| 中文字幕天堂网| 三级毛片在线看| 国产一区二区在线观看免费| 天天影院网| 91亚洲视频在线| 亚洲视频四区|