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

FPGA設(shè)計(jì)經(jīng)驗(yàn)談 —— 10年FPGA開(kāi)發(fā)經(jīng)驗(yàn)的工程師肺腑之言

發(fā)布時(shí)間:2014-8-8 14:01    發(fā)布者:看門狗
關(guān)鍵詞: FPGA
作者:friends

  從大學(xué)時(shí)代第一次接觸FPGA至今已有10多年的時(shí)間。至今記得當(dāng)初第一次在EDA實(shí)驗(yàn)平臺(tái)上完成數(shù)字秒表,搶答器,密碼鎖等實(shí)驗(yàn)時(shí),那個(gè)興奮勁。當(dāng)時(shí)由于沒(méi)有接觸到HDL硬件描述語(yǔ)言,設(shè)計(jì)都是在MAX+plus II原理圖環(huán)境下用74系列邏輯器件搭建起來(lái)的。后來(lái)讀研究生,工作陸陸續(xù)續(xù)也用過(guò)Quartus II,F(xiàn)oundation,ISE,Libero,并且學(xué)習(xí)了verilogHDL語(yǔ)言,學(xué)習(xí)的過(guò)程中也慢慢體會(huì)到verilog的妙用,原來(lái)一小段語(yǔ)言就能完成復(fù)雜的原理圖設(shè)計(jì),而且語(yǔ)言的移植性可操作性比原理圖設(shè)計(jì)強(qiáng)很多。

  在學(xué)習(xí)一門技術(shù)之前我們往往從它的編程語(yǔ)言入手,比如學(xué)習(xí)單片機(jī)時(shí),我們往往從匯編或者C語(yǔ)言入門。所以不少開(kāi)始接觸FPGA的開(kāi)發(fā)人員,往往是從VHDL或者Verilog開(kāi)始入手學(xué)習(xí)的。但我個(gè)人認(rèn)為,若能先結(jié)合《數(shù)字電路基礎(chǔ)》系統(tǒng)學(xué)習(xí)各種74系列邏輯電路,深刻理解邏輯功能,對(duì)于學(xué)習(xí)HDL語(yǔ)言大有裨益,往往會(huì)起到事半功倍的效果。

  當(dāng)然,任何編程語(yǔ)言的學(xué)習(xí)都不是一朝一夕的事,經(jīng)驗(yàn)技巧的積累都是在點(diǎn)滴中完成,F(xiàn)PGA設(shè)計(jì)也無(wú)例外。下面就以我的切身體會(huì),談?wù)凢PGA設(shè)計(jì)的經(jīng)驗(yàn)技巧。

  1)看代碼,建模型

  只有在腦海中建立了一個(gè)個(gè)邏輯模型,理解FPGA內(nèi)部邏輯結(jié)構(gòu)實(shí)現(xiàn)的基礎(chǔ),才能明白為什么寫(xiě)Verilog和寫(xiě)C整體思路是不一樣的,才能理解順序執(zhí)行語(yǔ)言和并行執(zhí)行語(yǔ)言的設(shè)計(jì)方法上的差異。在看到一段簡(jiǎn)單程序的時(shí)候應(yīng)該想到是什么樣的功能電路。

  例如:



  上面這段代碼實(shí)現(xiàn)的功能就是一個(gè)帶使能端的2選1數(shù)據(jù)選擇器,如下圖所示。



  再例如:



上面這段always實(shí)現(xiàn)的是帶同步清零端的串并轉(zhuǎn)換移位寄存器,位寬為width,下圖為8位電路模型



  當(dāng)你具備了一定的識(shí)代碼能力之后,你會(huì)發(fā)現(xiàn)原來(lái)Verilog不是那么的枯燥,只不過(guò)是一個(gè)個(gè)電路模型的拼搭而已。

  2)組合邏輯中的if...else...與case

  對(duì)于多輸入端的組合邏輯來(lái)說(shuō),如果不需要考慮優(yōu)先級(jí)應(yīng)該盡量采用case語(yǔ)句來(lái)描述,這樣綜合出來(lái)的電路并行度要大一些,如果采用if...else...結(jié)構(gòu),綜合出來(lái)的電路都是串行的,增大了信號(hào)時(shí)延路徑。降低寄存器間組合路徑的延遲是提高系統(tǒng)工作頻率的主要手段,因此在完成相同功能的前提下應(yīng)該盡量使用并行結(jié)構(gòu)邏輯。



  可以看出,并行模式比串行模式少了一級(jí)延時(shí)路徑,隨著輸入端的增多,串行邏輯將比并行邏輯產(chǎn)生更多的延時(shí)路徑。

  3)用數(shù)學(xué)思維來(lái)簡(jiǎn)化設(shè)計(jì)邏輯

  學(xué)習(xí)FPGA不僅邏輯思維很重要,好的數(shù)學(xué)思維也能讓你的設(shè)計(jì)化繁為簡(jiǎn),所以啊,那些看見(jiàn)高數(shù)就頭疼的童鞋需要重視一下這門課哦。舉個(gè)簡(jiǎn)單的例子,比如有兩個(gè)32bit的數(shù)據(jù)X[31:0]與Y[31:0]相乘。當(dāng)然,無(wú)論Altera還是Xilinx都有現(xiàn)成的乘法器IP核可以調(diào)用,這也是最簡(jiǎn)單的方法,但是兩個(gè)32bit的乘法器將耗費(fèi)大量的資源。那么有沒(méi)有節(jié)省資源,又不太復(fù)雜的方式來(lái)實(shí)現(xiàn)呢?我們可以稍做修改:

  將X[31:0]拆成兩部分X1[15:0]和X2[15:0],令X1[15:0]=X[31:16],X2[15:0]=X[15:0],則X1左移16位后與X2相加可以得到X;同樣將Y[31:0]拆成兩部分Y1[15:0]和Y2[15:0],令Y1[15:0]=Y[31:16],Y2[15:0]=Y[15:0],則Y1左移16位后與Y2相加可以得到Y(jié);則X與Y的相乘可以轉(zhuǎn)化為X1和X2分別與Y1和Y2相乘,這樣一個(gè)32bit*32bit的乘法運(yùn)算轉(zhuǎn)換成了四個(gè)16bit*16bit的乘法運(yùn)算和三個(gè)32bit的加法運(yùn)算。轉(zhuǎn)換后的占用資源將會(huì)減少很多,有興趣的童鞋,不妨綜合一下看看,看看兩者差多少。

  4)時(shí)鐘與觸發(fā)器的關(guān)系

  “時(shí)鐘是時(shí)序電路的控制者”這句話太經(jīng)典了,可以說(shuō)是FPGA設(shè)計(jì)的圣言。FPGA的設(shè)計(jì)主要是以時(shí)序電路為主,因?yàn)榻M合邏輯電路再怎么復(fù)雜也變不出太多花樣,理解起來(lái)也不沒(méi)太多困難。但是時(shí)序電路就不同了,它的所有動(dòng)作都是在時(shí)鐘一拍一拍的節(jié)奏下轉(zhuǎn)變觸發(fā),可以說(shuō)時(shí)鐘就是整個(gè)電路的控制者,控制不好,電路功能就會(huì)混亂。打個(gè)比方,時(shí)鐘就相當(dāng)于人體的心臟,它每一次的跳動(dòng)就是觸發(fā)一個(gè)CLK,向身體的各個(gè)器官供血,維持著機(jī)體的正常運(yùn)作,每一個(gè)器官體統(tǒng)正常工作少不了組織細(xì)胞的構(gòu)成,那么觸發(fā)器就可以比作基本單元組織細(xì)胞。時(shí)序邏輯電路的時(shí)鐘是控制時(shí)序邏輯電路狀態(tài)轉(zhuǎn)換的“發(fā)動(dòng)機(jī)”,沒(méi)有它時(shí)序邏輯電路就不能正常工作,因?yàn)闀r(shí)序邏輯電路主要是利用觸發(fā)器存儲(chǔ)電路的狀態(tài),而觸發(fā)器狀態(tài)變換需要時(shí)鐘的上升或下降沿!由此可見(jiàn)時(shí)鐘在時(shí)序電路中的核心作用!

5)關(guān)于IP核和乒乓操作的那點(diǎn)事

  經(jīng)驗(yàn)告訴我,能使用開(kāi)發(fā)工具自帶的IP核,就千萬(wàn)別去自己開(kāi)發(fā)。往往自己開(kāi)發(fā)已有的IP核是吃力不討好。我曾經(jīng)做過(guò)一個(gè)eMMC控制器燒寫(xiě)外部eMMC芯片的案子。

  數(shù)據(jù)由上位機(jī)通過(guò)USB傳給MCU,然后通過(guò)數(shù)據(jù)總線發(fā)到FPGA,在FPGA內(nèi)部形成燒寫(xiě)eMMC芯片的時(shí)序,燒寫(xiě)外部芯片。框圖如下:



  最初的算法是通過(guò)數(shù)據(jù)總線發(fā)一個(gè)字節(jié),再向芯片打一個(gè)字節(jié),一個(gè)頁(yè)的512字節(jié)的CRC16需要事先用軟件計(jì)算好,但是這種方式燒寫(xiě)速度太慢。后來(lái)我想到一種方案,先把512個(gè)字節(jié)傳到FPGA內(nèi)部存儲(chǔ)起來(lái),并且在FPGA內(nèi)部計(jì)算好16個(gè)字節(jié)的CRC,然后用高速系統(tǒng)時(shí)鐘一次性把整頁(yè)528個(gè)字節(jié)傳給芯片,這種方式燒寫(xiě)速度能提高很多。一開(kāi)始我想自己設(shè)計(jì)一個(gè)帶CRC計(jì)算的RAM或者FIFO來(lái)存儲(chǔ)528個(gè)字節(jié)的數(shù)據(jù),可是無(wú)論怎么設(shè)計(jì)數(shù)據(jù)傳輸總是有問(wèn)題,由于是一個(gè)人做,也沒(méi)人指導(dǎo),只得放棄這種方案,改用其他。因?yàn)槲矣玫腦ilinx器件有現(xiàn)成的FIFO核可以調(diào)用,于是我就把CRC16的計(jì)算和存儲(chǔ)512字節(jié)數(shù)據(jù)分開(kāi)設(shè)計(jì),在最后輸出到芯片端再選通。因?yàn)闊龑?xiě)eMMC一個(gè)頁(yè),需要有一定的等待POLLING時(shí)間,所以我想到了用兩組FIFO,乒乓操作,A通道數(shù)據(jù)發(fā)送到芯片并且等待應(yīng)答的時(shí)候,MCU端向B通道發(fā)送數(shù)據(jù)存儲(chǔ),B通道數(shù)據(jù)發(fā)送到芯片并且等待應(yīng)答的時(shí)候,MCU端再向A通道發(fā)送數(shù)據(jù)存儲(chǔ),這樣最大化的加速了燒寫(xiě)速度,當(dāng)然最后的設(shè)計(jì)結(jié)果我也是相當(dāng)滿意的。



  我想通過(guò)此例告訴大家的是,盡量用系統(tǒng)的IP核吧,省事又省心,因?yàn)檫@些都是前輩專家們?cè)O(shè)計(jì)出的經(jīng)典。還有就是利用一些設(shè)計(jì)技巧,比如乒乓操作,流水線操作可以讓你的設(shè)計(jì)性能優(yōu)化不少。

  最后簡(jiǎn)單說(shuō)一下體會(huì)吧,歸結(jié)起來(lái)就多實(shí)踐、多思考、多問(wèn)。實(shí)踐出真知,看100遍別人的方案不如自己去實(shí)踐一下。實(shí)踐的動(dòng)力一方面來(lái)自興趣,一方面來(lái)自壓力,我個(gè)人覺(jué)得后者更重要。有需求會(huì)容易形成壓力,也就是說(shuō)最好能在實(shí)際的項(xiàng)目開(kāi)發(fā)中鍛煉,而不是為了學(xué)習(xí)而學(xué)習(xí)。在實(shí)踐的過(guò)程中要多思考,多想想問(wèn)題出現(xiàn)的原因,問(wèn)題解決后要多問(wèn)幾個(gè)為什么,這也是經(jīng)驗(yàn)積累的過(guò)程,如果有寫(xiě)項(xiàng)目日志的習(xí)慣更好,把問(wèn)題及原因、解決的辦法都寫(xiě)進(jìn)去。最后還要多問(wèn),遇到問(wèn)題思索后還得不到解決就要問(wèn)了,畢竟個(gè)人的力量是有限的,問(wèn)同學(xué)同事,問(wèn)搜索引擎,問(wèn)網(wǎng)友,都可以,一篇文章、朋友們的點(diǎn)撥都可能幫助自己快速解決問(wèn)題。
本文地址:http://m.qingdxww.cn/thread-131649-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
eda_gb 發(fā)表于 2014-8-8 21:25:51
不錯(cuò)
eda_gb 發(fā)表于 2014-8-8 21:26:42
有意 eMMC控制器  QQ595767580
baowenhit 發(fā)表于 2015-1-3 16:49:07
大神你好,有些用FPGA的eMMC控制問(wèn)題請(qǐng)教,可以嗎
韋可可 發(fā)表于 2015-8-24 10:04:09
樓主有技術(shù)上問(wèn)題請(qǐng)教,83527759
韋可可 發(fā)表于 2015-8-24 10:04:25
樓主有技術(shù)上問(wèn)題請(qǐng)教,QQ83527759
韋可可 發(fā)表于 2015-8-24 10:05:03
樓主有項(xiàng)目可以合作,QQ83527759
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • Dev Tool Bits——使用MPLAB® Discover瀏覽資源
  • Dev Tool Bits——使用條件軟件斷點(diǎn)宏來(lái)節(jié)省時(shí)間和空間
  • Dev Tool Bits——使用DVRT協(xié)議查看項(xiàng)目中的數(shù)據(jù)
  • Dev Tool Bits——使用MPLAB® Data Visualizer進(jìn)行功率監(jiān)視
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久国产高清波多野结衣 | 色猫咪av在线网址 | 一区二区三区国产 | 欧美图片欧美激情欧美精品 | 天天激情站 | 欧美日韩视频一区二区在线观看 | 欧美成人免费香蕉 | 亚洲尹人香蕉网在线视颅 | 日本免费精品视频 | 手机在线免费不卡一区二 | 二次元美女被虐流白浆漫画 | 色婷婷精品免费视频 | 日本中文不卡 | 四虎影视4hu4虎成人 | 国产99久久 | 国产精品成人久久久久 | 自拍视频一区 | 视频一区 日韩 | 日韩一区国产二区欧美三区 | 最新69国产成人精品视频69 | 成年黄网站在线观看免费 | 免费特级毛片 | 亚洲免费成人在线 | 四虎永久网址在线观看 | 青青青国产免费 | 手机在线国产视频 | 男女交配在线观看 | 恋爱综合症电视剧泰剧在线观看 | 精品国产1区 | 天堂网免费 | 午夜在线播放免费人成无 | 国产成人拍精品视频网 | 日韩欧美在线一级一中文字暮 | 国产精品公开免费视频 | 天堂网www天堂在线网 | 欧美黄色一级片免费看 | 欧美午夜网站 | 久久9精品 | 青青草国产精品人人爱99 | 视频一区日韩 | 免费视频一区 |