下面的內容轉自EDAcn論壇,對初學者會有幫助。 看的時候腦子多轉幾下,不要被動的接受!! from http://www.edacn.net/bbs/viewthread.php?tid=9851&extra=page%3D4 ******************************************************************** 很久沒有發帖子了,很對不住大家。工作上已經不做FPGA了,并且工作上太忙。今天跟一個人聊FPGA,我就將我當時的一些話貼出來,大家就當隨便看看,浪費一兩分鐘時間。 有人問我,三態門自己寫了一個程序,卻調試不出來。當然,我現在也沒有用語言自己寫一個三態門出來,我更習慣Ip Core里面的Tribuffer。自己編寫的,是需要有點技巧,尤其是在控制信號那個地方。最好還是用ip。悖铮颍澹茫椋稹。悖铮颍宓暮锰幵谟谡麄電路非常清晰。我曾經嘗試著自己寫一個三態門,但是調試過程中發現問題很多,所有后來干脆用系統提供的了。 另外,她說學習語言學了一個月,我覺得大可沒有這個必要。語言那東西,只是工具。并且,常用的語法也就那么多,所以根本沒有必要去專門學習。最好是用到的時候去查一下書,或者查一下外國人寫的那個電子版的handbook。 拿到一個設計要求后,首先就用你學到的數字電路知識把整個系統大體給搭一個原理圖出來,就像是用protel作電路板一樣。什么地方能用一個譯碼器就可以解決了,什么地方能用一個復用器就可以解決了,等等。等到你明白了這些,就應該很容易的做FPGA了。我一開始也是總在看別人說哪個語言好\哪個工具好,并且一開始覺得原理圖設計輸入方法是最笨的,但是到后來,我忽然發現,這才是真正的高手。系統設計的頂層最好采用原理圖模式,這樣整個系統非常清晰,便于多人和自己維護,而在一些低層模塊,可以用ip core的,盡量用ip core;不行的,就把功能細分,每一個子功能寫一個vhd或v文件,然后編譯成symbol,在原理圖中調用symbol。 我只是在這里泛泛而談,希望能夠對初學者有一點幫助,如果有說得不對的地方,希望大家多多指正。 by channelelle ******************************************************************* 其實FPGA不是學會的,是做會的。遇到問題,解決問題和總結經驗,不斷往復,水平就提高了。 剛開始做,誰都會遇到問題。這時候不要動不動就張口問別人,要自己多想一想,試一試。比如,剛焊好的板子,上電后,下載不了,這是一個新手經常遇到的問題。 一般來說,大多數人會去檢查下載電路的原理圖,如果發現和正確的原理圖沒有區別就沒辦法了,開始懷疑芯片是不是壞了,焊接是不是有問題,是不是哪里有干擾啊等等。 而有的細心一些的人,就會仔細的看看下載的原理,信號的時序,用示波器看看板上信號的時序,一步一步的找原因。如果沒有找到,就會仔細檢查FPGA的電路,從電源設計,到去耦電容擺放等等方面去動手查找原因。如果覺得那里有問題,就動手改一看看,測一側有沒有改變,而不是坐著想哪里出問題。 可能最后就是芯片壞了,或者沒有焊接好,但是后者確在這個過程中學到了很多東西,至少對FPGA下載的原理了解的十分清楚。 以上是隨便舉的一個例子,還有一點要忠告大家的就是不要輕易的懷疑芯片有問題,如果電路工作不正常,那么99%的原因是和設計有關的,是可以找到確定的原因的,而不是偶然的,即使是噪聲或者干擾。 by RedLogic **************************************************************** FPGA這東西最需要的就是自己去實際動手編寫程序,哪怕僅僅是編寫一個737,只有在不斷的編寫調試的過程中才能找到感覺。同意樓上的觀點,不要過分的去看語法,常用的其實不多。我剛開始也是認為整個系統全部用語言編寫最好,通過個人的經驗教訓才發現,頂層文件最后用原理圖。 還有個建議就是平時多自己編寫聯系一些東西,比如花點時間編一點任意分頻器啊鎖相環啊什么的,從中會找到很多樂趣。當然必須要遇到很多困難才有樂趣了。如果什么困難都沒有,那只能說您是高手了。 還有就是要互相之間多討論,每個人的觀點都可能是你學習的內容。 也亂想到這里. 還有要補充一點就是如果是做系統的設計,最后一定用同步系統。 by bluetooth884 **************************************************************** 我是一個新新手,我也來說幾句。我開始學EDA也有一年時間,開始我學verilog語言,當時沒有條件,電腦沒有,學習板也沒有。我就天天看語法,看別人的程序。一直到今年3月份條件才改善,有自己的電腦和學習板,老師教是用VHDL,所以我就改學這個了。因為要準備9月份的電子競賽,所以要提前學,憑老師教的那點東西肯定是不夠的,我只花了一個星期的時間把很常用的語法記住,然后再花兩個星期的時間看別人的程序,從別人的程序中學會基本格式。開始進步很慢,主要阻力是軟件不會使用,全憑自己去摸索要很長時間,4月 12,13兩天聽了潘松老師的兩天課,他主要是講quartus的使用,感覺那兩天學了很多東西。軟件基本會使用后開始自己慢慢的編小程序,但真正要提高還是具體做點什么東西。接下來兩個星期老師布置了一個數字頻率計的題目,FPGA做處理,MCU做控制。但我對單片機不熟悉,結果下來感覺是單片機不能從FPGA讀數據,題目沒有完成。但這次具體的應用讓我也學到很多東西,系統時鐘,保持時間,建立時間等等一些很基本的概念,這些在高手們看來可能是再簡單不過的東西,但一個新手全憑自己的摸索去了解這些東西已經是很不容易了。我沒有夸自己的意思,我是想說真正要學到東西,一定要投入到具體的項目中去,這些話前輩們已經說過很多次。還有一點想說的就是,新手不要好高騖遠,我就犯了這樣的錯誤,最基本的沒搞懂,我就想去學嵌入式系統。 我現在水平還非常非常有限,真正要我獨立完成一個小系統的設計還很困難。有很多基本的東西我還不懂,但我很想學好這個。上次那個題目沒有做出來,老師好像不怎么相信我的EDA了(呵呵)。再老師對這個不熟悉,他就什么東西只想用模電和單片機做出來,其實給我很大感覺就是對于同一個題目EDA可以在很大程度上弱化單片機,使題目變的更加容易實現。所以現在要加緊學好,到9月份還不到半年的時間了,我能學成什么樣子呢?我們這里教EDA的老師很少,就2個,給我們上課的老師講了半學期的ABEL。很多不懂的東西沒人問,只能在這里發發帖子問問這里熱心的人了。 感謝曾經給過我莫大幫助的DX們。希望你們的幫助讓我有質的飛躍! by fenglouto1 *************************************************************** to channelelle:雖然前面回文的評價還可以,但是我想我還是應該很直接要指出你其中很多的錯誤思想,我不想有更多的受到誤導,請原諒我說的比較直接。 系統級的設計我們為什么還需要畫原理圖?我們在總體設計方案中可以將一級模塊劃分好,將一級模塊的接口時序定義好,完完全全沒有必要用畫原理圖,除非你在做設計之前是不做方案的或者方案做的很差。 我們要求設計要盡量的做到與器件無關(除了FIFO、PLL等),你這樣畫原理怎么實現平臺的無關性?如果我之前用的是altera的器件,現在要轉成xilinx的,你那原理圖還能用? 一般來說芯片廠家的EDA工具綜合性能都一般,如果你要用第三方綜合工具怎么辦? 還有,你這樣畫原理圖那仿真怎么辦?你該不會用quartus下畫波形圖吧?我們大的設計用modelsim都要跑幾個小時,你畫原理圖怎么在第三方仿真軟件下做仿真? 還有,如果畫原理圖有用,人家還要弄個systemC、E語言、system verilog做什么? 另外,你為什么連寫個三態門還要調core,一行就可以描述出來的呀! by wangdian ************************************************************* 看了大家的發言,覺得自己還是要暴露一下自己的問題了。我呢,畢業時到公司直接就接觸了公司以前的設計內容,為了更快的完成任務,只能在以前的系統設計上修修改改,慢慢的發現一些問題,但是也只能一步一步來,所以就開始學習語言,因為有些東西確實用語言來設計輸入比較快。但是為了和以前的系統一起工作,就有了很多限制。現在一直比較煩惱,為了這個系統。不知道何時才是一個頭。自己設計其實已經比較習慣了原理圖的形式,因為剛開始的時候都學習的那些,在這個轉換過程中是不是都會有一段比較迷茫?謝謝大俠們分享那么多的心得和知識,在這里我們學習到了很多。 by kuangshunlan ************************************************************** 看到了很多和自己相似的經歷。。。。 TO wangdian:channelelle的意思你可能理解錯了,他其實是想說,對系統而言要模塊化,便于大系統調試,調用IP CORE是一種優化、快捷的方式。也許channelelle的思想更適合技術的市場化,對企業而言講求的是效率、速度,做研究嘛,你可以從三級管去研究起,呵呵~~這也是北京與深圳的區別,不可否認北京牛人很多。。。但是。。。。。 當然FPGA還是屬于硬件,對綜合出來的各個功能模塊要有深刻的理解,盡量從寄存器級去考慮它的性能,而不是行為級。 by xiaozheng ************************************************************** :同意wangdian。 原理圖輸入應該盡量拋棄,系統設計必須考慮前期調試、后期維護和移植。 xiaozheng的話有些牽強,說什么北京和深圳的區別就是風涼話了,大家都是搞技術的,就事論事,IP Core要看什么場合,三態門一句話就搞定了你還要用Ip core,在這里開壇講座如何讓人信服? by duohaodai **************************************************************** re:duohaodai 我不反對各分模塊用語言來描述,但是頂層用原理圖描述條理更加清晰,也方便別人參閱,元件例化一大堆誰明白?當然,如果你的資料整理的比較好,并另給出總體結構圖也是可以的,移植的確是個問題,不過現在的企業有又誰同時在使用幾個平臺的呢。 IPcore為什么老是要咬住三態門來討論?說白了,大多數企業干的就是調函數包,底層核心的開發你還是去altera\xilinx\micosoft\ibm去研究吧 by xiaozheng *************************************************************** 我也來說兩句吧, 做設計前就應該考慮好系統結構,這叫成竹在胸:) 而具體到設計實現階段的話,原理圖輸入是沒有必要地, 還有、對于一些小的底層單元,比如shifter,mux,adder等等, 還是不要采用實例化ip core模塊的方式為好,用HDL語言描述就好了(這叫引用模塊的方式叫inference), 原因就是在設計實現的階段、要充分考慮到design portable ,code reusable 。 by chips ************************************************************* 我覺得大家有些誤解原理圖輸入方法了,在做大系統時,一定要自頂向下的設計,當每個底層模塊用語言設計完畢并且仿真調試OK后,將其編譯為圖形模塊,然后在頂層用原理圖輸入的方法調用這些模塊,將各個模塊用信號線連接起來,構成整個系統。這里所說的原理圖輸入的方法并不是一定要用各種標準的邏輯元件組裝電路,而是用語言設計的功能模塊組成系統?催@樣設計的頂層文件,系統結構一目了然,這和純語言設計前所做的系統邏輯框圖是一樣的,都是為了清晰的描述系統結構。 當然,是用純語言設計好,還是用圖形輸入法設計頂層再調用用語言設計的底層模塊也好,我看這兩種方法都好,應根據個人的愛好和習慣而定,就象用VHDL語言或用Verilog HDL語言都能設計好的系統一樣,大家說呢? by 楓 *********************************************************** 各位,你們做過多大的系統啊,老是在這里誤導別人?這篇文章寫的幾乎全是誤導別人的話,就拜托你們別在叫好了! 層次結構不是靠原理圖保證的,是靠文檔!系統級建模也不會用原理圖去做啊,不然大家去弄個system C、system verilog做什么? by wangdian *********************************************************** 迫不及待的看完六頁,有很多是跟我想法相同的,也有不一樣的。 工具這東西(包含語言)只要用熟了應該都好用。但相比之下肯定有個容不容易上手的問題,當然前提是都對新手而言,如果要一個畫了幾年原理圖的去用Verilog或是VHDL語言,當然感覺很不爽。 我個人認為為什么在有了原理圖設計法的前提下又開發出Verilog等語言,肯定是有一定道理的。對新手而言,這些語言絕對更容易上手,而且還有很多其它的優點。但肯定也有它自身的不足,呵呵。 重要的不是開發工具,而是開發思想。 by dsp20tlh ********************************************************** 首先就用你學到的數字電路知識把整個系統大體給搭一個原理圖出來,就像是用protel作電路板一樣。什么地方能用一個譯碼器就可以解決了,什么地方能用一個復用器就可以解決了,等等。等到你明白了這些,就應該很容易的做FPGA了 聽起來好象整個FPGA設計都是在做數字電路設計了 by tianhun ********************************************************* 我認為,你說的非?陀^、也很誠懇。我也作了一段時間的FPGA了。 由于我自小就對電子技術很感興趣,經常擺弄一些電子器件,所以對硬件的理解更深入一些,所以對于我來說,我開始做FPGA設計的時候,就是直接從原理圖輸入開始的。我認為這樣容易理解,而且非常直觀。當讓致命的缺點就是設計移植性能不好。 我現在也在強迫自己將一些簡單模塊用語言去寫出來,封裝成模塊,到原理圖中去調用。 今天看到您的帖子,我很高興自己的一些設計方法可以得到高手的認同。 我現在也是剛剛開始學習Verilog。由于習慣于理解原理圖輸入,我只能強迫自己去用語言。因為很多人都告誡我,很多大公司都要求用語言進行設計,所以為了以后能混口飯吃,還是要學些語言。 我的郵箱地址:fylouis@126.com 期待著與高手交流經驗與心得。 by fylouis ******************************************************* 雖然來晚了,還是要雙手贊同。 在總體設計方案中將一級模塊劃分好,將接口時序定義好,沒有必要用畫原理圖。這種方法似乎清楚,但是既然把設計都能畫出來,那在在文檔中體現功能框圖和接口連接關系應該比較容易,可能在設計初期修改方案采用原理圖比較方便而已。我們采用高級語言來設計,盡量要作到和器件無關。況且,當產品上量后,要不要投 ASIC來降低成本?當工藝提高后,采用ASIC實現的成本有可能比采用FPGA低很多。這個時候就出現問題了,設計怎么移植?有可能重新設計,仿真。 by goldlion98 ***************************************************** 在FPGA領域可能還有原理圖一說,但在ASIC基本無此觀點,可能說玄了就是電路在我心,基本兩個字同步。 對于設計而言,我也不反對用原理圖,因為每個人都有一個學習得過程成長的過程,但如果你要做IC,就可以在以后拋調原理圖。 對于初學者可以先用原理圖,在頂層用原理圖是一些FPGA設計者喜歡的方法,其實無可厚非因為不作IC,但是在底層用原理圖我不推薦,因為那會阻礙你前進的步伐。 by jjliu ***************************************************** 呵呵,在FPGA做頂層模塊時,原理圖也好,程序描述也好,看個人習慣了,總之就是要做到結構清晰,便于修改和維護即可。不過個人覺得,使用原理圖方式的確會碰到程序移植方面的問題,我自己更習慣于用程序來描述各模塊之間的連接。 至于看前面帖子有人這么說“真正的牛人都是搭底層電路設計的…” 我是這么理解的,能用底層電路搭起自己所需要的設計的,證明ta對整個設計理解很深,理解已經到了rtl級,而不是只停留在行為級的理解上。因此所謂之牛~ 呵呵,個人理解,歡迎拍磚。 不過,還是覺得hdl語言方便些,當然可能有人覺得自己用基本電路搭更得心應手,更可控;但如果你能夠充分地理解你用hdl語言,并保證描述的電路綜合之后就是你想要的,那我覺得那也是高手~ 只是高手和高手的習慣不同而已… :) |