1. 程式人生 > >MAX10系列FPGA設計案例簡述

MAX10系列FPGA設計案例簡述

                                                  基於Intel(Altera)MAX10系列FPGA的設計案例簡述 

                                                                                                                                 作者:Hello,Panda於北京

       書接前回,不知大家是否還記得2015年公曆最後一天,熊貓君給大家推薦了Altera(當時的Altera還是Altera)的MAX10系列FPGA呢?三年後的今天,熊貓君想繼續展開聊聊,分享分享這三年裡實施過的或看到別人實施過的基於MAX10系列FPGA的應用方案,當然啦,這些應用還是主要集中在控制類、介面類領域,畢竟能力和定位在那裡。

     案例一:工業相機系統

       對一部分工業相機而言,前端最多的是實現影象Sensor採集(或許還有一些簡單預處理)和傳輸,演算法應用處理大多在計算機上,一般的方案架構如下:

                                                                           圖1  部分工業相機的架構圖

     

(1)如圖1所示,核心是個FPGA(需要做預處理的可能會掛一片SRAM或者DDR),主要擔負Sensor的配置與資料採集、與工控機的控制互動和影象資料上傳等工作;

     (2)Sensor通常解析度不會太大,也有可能是Mono的,也有可能幀率較高,輸出介面則是五花八門,有可能是LVDS、Hispi、BT601/656/1120等等各種;配置匯流排介面則基本是SPI或IIC;通過FPGA邏輯實現資料接收和配置匯流排介面;

     (3)控制介面與計算機互動控制命令或狀態,控制命令有可能是設定相機、同步觸發等,物理層可能通過RS-232/422/485或者CAN匯流排等;通過FPGA IP資源實現控制介面;

     (4)這裡的資料介面輸出相機前端系統的資料到工業相機,物理層常用的有a)USB3.0,通常採用Cypress的轉接橋片,FPGA實現一個並行儲存匯流排邏輯;b)乙太網,一般會用UDP傳輸,要求高一些的會走一些握手協議,GigE Vision目前用的比較多,會利用FPGA IP資源來實現(當然GigE Vison IP並不免費,有人選擇花錢買第三方的,也有公司選擇自主開發); c)CameraLink,這個大家都熟悉,工業相機用了好些年了;

    (5)有一些簡單預處理的,會選擇掛SRAM或DDR來快取,做一些類似於幾何拼接、壞點校正、簡單的降噪、增強或者Gamma之類的(有的用到18*18乘法器,看具體演算法);

       實際上這裡選哪家的FPGA並沒有什麼特殊的優勢或者門檻,有用Xilinx或Altera Cyclon的,也有用Lattice的。我這裡想說的是,這幾年用MAX10的越來越多了。大家或許是基於下面的一些原因考慮的吧:

    (1)價效比因素:比Xilinx的便宜得多,就算是MAX10系列的器件和Lattice同規模的相比較價格也在同一個水平上,但是用起來會更方便、IP資源也多、社群生態也更豐富;

    (2)單電源3.3V或者雙電源(2.5V和1.2V)供電:這樣能極大的簡化電源方案,如果選用單電源3.3V的,基本上只要一個電軌就夠了;

    (3)內建Flash:無需再外接程式或資料儲存的Flash;

    (4)汽車認證:AEC-Q100認證,這對有些應用來說很重要。

   綜合來講,用MAX10系列器件能夠大幅的減少電路尺寸、節省BOM成本,但是也有一些缺點,主要集中在單電源供電的器件發熱稍大、部分器件的交期較長。

   案例二:電源控制

       在複雜的系統中往往有多個處理器或處理單元、模組,對掉電、上電和電源調節有特殊的要求,主要體現在時序和反饋調節上。在這裡使用CPLD太弱、使用其它FPGA太費,熊貓君看到用得比較多的是單電源供電的10M02(或者10M04,畢竟還是有一些邏輯需求在裡面),封裝一般用M153的(8mm*8mm)。主要實現的功能如下:

     (1)上電和掉電時序控制,這個簡單,GPIO輸出個高低電平OK;

     (2)反饋調節:用片上的SAR ADC取樣電壓或者電流資料,通過SMBUS對電源管理晶片進行實時調節(也有用DAC調節電源FB基準的);

     (3)風扇控制:取樣溫度、PWM調節風扇轉速的;

     (4)有的還會和處理器建立一個通訊介面,一般是SPI或者IIC。

      用起來特別方便,一個3.3V電源,一片MAX10晶片搞定一切,佔的地方小,也便宜。

    案例三、電機控制

      電機控制這一塊兒的應用有用作控制步進電機的,也有用在BLDC(FOC)控制上的。

     (1)步進電機:比較簡單,就是一個根據輸入命令訊號生成相位脈衝,真的很簡單,主要還是用10M02的器件;

     (2)用作介面轉接的:主要是在BLDC(FOC)控制中取樣編碼器之類反饋器件的值,編碼器介面的協議眾多,FPGA採集到後經過濾波處理(有的用到18×18乘法器,看演算法)通過匯流排送到主處理器如TI的TMS320F28335/ TMS320F28069之類的專用的電機控制DSP上。對較為複雜的如多機械關節的地方,接入的編碼器路數可能還會比較多,這一塊兒主要還是用10M02和10M04的器件較多。

     案例四、影象介面

        一個是體現在其它介面與MIPI D-PHY之間的轉接上,監控和顯示領域用得比較多,早期主要是用的Lattice的方案(基本上自己沒法改動),現在也有一些用MAX10方案的:

       (1)監控領域:主要是做sensor的採集到主處理器MIPI介面輸入(早幾年TI的方案上也有轉並口BT1120的),監控行業現在主要是和華為海思主處理器的MIPI D-PHY CSI介面對接;

       (2)顯示領域:主要是MIPI D-PHY DSI轉SDI(用第三方收發器晶片)、HDMI、LVDS用於中大型屏顯示的。

       這兩種應用大多會用10M25和10M40雙電源(單電源的LVDS工作速率要低)的器件。

       二個是一些特殊的應用,比如說模擬輸出的影象在前端又不能用較大面積電路的。如製冷型探測器的影象取樣:

       (1)傳統的辦法是分成2級或者3級:a)最前端是信號板,套在探測器的脖子上(業內人士清楚這種方式); b)中間是AD板(這一級也有可能沒有,直接放到影象處理板上),主要進行ADC取樣,離信號板的距離相對近(因模擬訊號不適合遠距離傳輸,即使轉成差分的);c)影象板:接收AD板取樣的訊號(或者是板上本來就有AD取樣電路)和紅外影象處理。這樣子帶來的不利影響是模擬訊號需要較長距離的線上傳輸,可能會帶來干擾或衰減,影響影象質量(這對紅外影象系統很重要);電路多且分散,也會對可靠性帶來影響。

       (2)採用MAX10的方案,將低功耗ADC和信號板合併,實現模擬訊號傳輸路徑最優,轉成LVDS數字訊號抗干擾能增強。已知現有的主要是用M153封裝(8*8mm面積)的那顆料。

       另外還有一些其他介面的應用,比如說子母時鐘系統,對時碼輸出有秒對齊要求的,會用它來做介面板輸出串列埠、1X9或其他介面的時碼。

       總之呢,MAX10的器件在價效比、資源和易用性上還是很有優勢的。不過,就目前的國際形勢來看,中國還是需要有且必須有自己的真正能夠達到規模商用水平的FPGA,熊貓君期待那一天儘快到來。

       另外,為了促進交流,感興趣的同行可加入QQ群:300148644進行進一步的技術交流或需求對接!