<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > Zynq-7000的柔性直流輸電橋臂控制器設計

          Zynq-7000的柔性直流輸電橋臂控制器設計

          作者: 時間:2016-09-12 來源:網(wǎng)絡 收藏

          引言

          本文引用地址:http://www.ex-cimer.com/article/201609/304014.htm

          柔性直流輸電技術是基于電壓源換流器(VSC)的新一代直流輸電技術,通過控制IGBT的通斷來實現(xiàn)子模塊投切狀態(tài)的轉換。閥控系統(tǒng)的根據(jù)接收到的子模塊16位電容電壓和32位狀態(tài)信息,生成子模塊控制指令,并下發(fā)到每個子模塊。由于子模塊的數(shù)量比較多(一個橋臂為576個子模塊),需要傳輸?shù)臄?shù)據(jù)量比較大(總共27.6 Kb),并且閥控系統(tǒng)對控制周期有嚴格的要求(控制過程嚴格控制在100μs內)。

          目前的普遍采用DSP+的設計架構,將接收到的數(shù)據(jù)處理后傳送給DSP,DSP對數(shù)據(jù)進行故障判斷生成控制指令,讀取控制指令并通過光纖發(fā)送到子模塊。兩者之間采用32位數(shù)據(jù)總線進行數(shù)據(jù)交互,數(shù)據(jù)傳輸速率低于1Gb/s,傳輸子模塊數(shù)據(jù)大概需要30μs,占用了控制周期較長的時間,降低了閥控系統(tǒng)的控制實時性。

          Xilinx的Zynq-7000系列芯片將FPGA和集成到一個芯片上,兩者之間可以通過64位的內存映射型AXI接口進行雙向數(shù)據(jù)傳輸,理論帶寬為9.6 Gb/s。和FPGA直接通過數(shù)據(jù)總線進行通信,理論數(shù)據(jù)線寬度達到1 024位,對于突發(fā)長度,最多支持256位,能夠極大地提高FPGA和的數(shù)據(jù)通信傳輸率,保證系統(tǒng)實時運行。

          本文設計的采用Zynq-xc7z020芯片,使用總線取代了DSP+FPGA的數(shù)據(jù)總線,同時利用ARM雙核Cortex—A9處理子系統(tǒng)和豐富的外設資源,進一步提升了橋臂控制器的功能。

          1 系統(tǒng)總體結構設計

          本文所設計的橋臂控制器由集成在Zynq—xc7z020內的雙核ARM Cortex—A9 MPCore處理器(CPU0+CPU1)所控制,這兩個處理器可以同時運行各自獨立的操作系統(tǒng)和軟件程序,而且可以通過片內RAM進行通信。

          為了保證ARM對FPGA中斷的實時響應,將CPU1配置為運行裸機程序,執(zhí)行中斷服務函數(shù),主要完成故障檢測和控制指令生成。而CPU0運行操作系統(tǒng),提供用戶控制圖形界面和網(wǎng)絡通信等功能。CPU0和CPU1通過片內256K的RAM進行數(shù)據(jù)通信,這種雙核架構稱為不對稱的多處理機系統(tǒng)(Asymmetric MultiProcessing,AMP)模式。

          Zynq-xc7z020芯片的FPGA接收到子模塊的電容電壓數(shù)據(jù)后,進行排序及冗余處理,然后利用AXI_Master Connector的AXI總線IP核將數(shù)據(jù)轉換為總線數(shù)據(jù)格式,通過ARM與FPGA的64位AXI HP(High Performance)高速接口傳輸?shù)酵獠康腄DR3中,數(shù)據(jù)傳輸完畢后,F(xiàn)PGA向ARM的CPU1發(fā)送一個中斷請求。

          ARM的CPU1接收到中斷后,從DDR3內存讀取數(shù)據(jù)并進行故障判斷處理,同時通知CPU0的操作系統(tǒng),在圖形界面實時顯示數(shù)據(jù)變化并通過網(wǎng)口向后臺發(fā)送事件信息。

          CPU1數(shù)據(jù)處理完畢后,生成子模塊控制指令并寫入DDR3指定內存區(qū),F(xiàn)PGA通過AXI_Master_Connector總線IP核從DDR3讀取數(shù)據(jù),并通過光纖發(fā)送到每個子模塊。

          運行的CPU0作為主節(jié)點,提供HDMI圖形界面,并負責系統(tǒng)上電硬件初始化、啟動CPU1、將位配置文件燒寫到FPGA中和升級系統(tǒng)軟件等工作。方案的整體框架如圖1所示。

          Zynq-7000的柔性直流輸電橋臂控制器設計

          2 硬件平臺設計

          橋臂控制器的硬件平臺主要分為ARM和FPGA兩部分。使用Xilinx XPS硬件設計軟件,配置Zynq處理器中ARM部分的外設,如圖2所示。

          Zynq-7000的柔性直流輸電橋臂控制器設計

          程序代碼和FPGA的配置文件固化在外部Quad—SPI Flash中,Enet0用來與后臺進行網(wǎng)絡通信,SD0可以掛接SD卡,I2C0用來掛接RTC8564JE芯片,I2C1控制器配置HDMI輸出芯片Sil9134,系統(tǒng)使用UART1輸出調試信息。

          FPGA部分的硬件平臺包括數(shù)據(jù)預處理的IP核、AXI總線控制IP核(IN_AXI_MASTER和OUT_AXI_MASTER),以及產(chǎn)生中斷的irq_gen_0 IP核,構建了FPGA、ARM和DDR3的數(shù)據(jù)流通道,如圖3所示。

          Zynq-7000的柔性直流輸電橋臂控制器設計

          添加AXI總線控制IP核時,需指定AXI協(xié)議為AXI4,數(shù)據(jù)帶寬為64位(最高1 024位),并將ARM與FPGA的64位AXI HP接口映射到DDR3內存的高端1 MB地址(0x3FF0 0000~0x3FFF FFFF),用來存儲接收到的子模塊數(shù)據(jù)以及生成的控制指令。

          3 嵌入式軟件設計

          Zynq-xc7z020芯片是以ARM作為核心的,上電后的運行流程如下:

          ①進入FSBL(First Stage Boot Loader),對電路板進行配置初始化;

          ②將位文件燒入FPGA,F(xiàn)PGA按照位中的方式運行;

          ③進入SSBL(Second Stage Boot Loader),u-boot初始化操作系統(tǒng)的運行環(huán)境,引導Linux內核,隨后將控制權交給雙核ARM中的CPU0,CPU0負責啟動響應FPGA中斷的CPU1。

          3.1 FSBL軟件設計

          FSBL主要完成Zynq—xc7z020芯片的啟動、內存的初始化、I/O的中斷初始化,以及HDMI的配置。其中,HDMI接口芯片Sil9134通過IIC1來配置。

          FSBL中I2C的主要C程序如下:

          //初始化I2C控制器

          XIicPs_LookupConfig(…);

          XIicPs_CfgInitialize(…);

          //設置I2C時鐘頻率

          XIicPs_SetSClk(…);

          //發(fā)送數(shù)據(jù)

          iic_writex(…);

          通過配置Sil9134的0x72基址和0x7A基址兩個寄存器,初始化芯片硬件,進入正常工作模式。

          3.2 啟動AMP工作模式

          Zynq—xc7z020芯片的ARM雙核共享1G的DDR3內存、512K的L2 Cache和中斷控制器,為了避免雙核同時訪問這些資源導致沖突,系統(tǒng)采用了以下措施:

          ①在CPU0上運行的Linux使用DDR3內存的低端768 MB空間,CPU1使用隨后的255 MB內存空間,高端的1 MB空間用來存儲FPGA讀寫的數(shù)據(jù)。

          ②CPU1禁用L2 Cache,CPU0上的Linux完全占用L2 Cache。

          ③FPGA發(fā)送給CPU1的中斷使用私有中斷控制器,發(fā)送給CPU0的中斷使用共享中斷控制器,兩者互不干擾。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();