Sunday, January 20, 2013

Register Transfer Level Design with Verilog (1) [ebook]

設計程式之所以有趣不外乎是它的千變萬化,同樣的結果卻有不同的寫法。

但這些不同寫法當中也並沒有分誰對誰錯,也沒有制定標準來規範何事該用何解。

這也就是我們設計者的珍貴!!

Screen Shot 2013-01-20 at 9.58.41 PM





[1] Primitive Instantiations

在Verilog中最基本的邏輯閘便稱為Primitive,使用最基本的primitive為基礎來設計別稱Primitive Instantiations。

Screen Shot 2013-01-20 at 3.56.46 PM




[2] Assign Statements

透過Primitive gates在利用assign將結果牽線別有更多變的結果。

Screen Shot 2013-01-20 at 4.05.52 PM



[3] Conditional Expression

顧名思義,就是條件式的表示方法!這也是能將硬邦邦的硬體注入多變思想的刀刃。

Screen Shot 2013-01-20 at 4.04.09 PM



[4] Procedural Blocks

至於這套程序則是非常高接的處理程序,往往是很多Conditional Expression所組成。

Screen Shot 2013-01-20 at 4.04.28 PM




所有教課書不往往儘說這些道理,但這些確有哪些不同呢?其實在我的見解就如下

[1]就是利用最基本的邏輯閘組成所需的系統。

[2]的概念就與數學相似,利用運算元來表示系統。

[3]條件是就有如黑盒子概念,拿數位邏輯的概念來說,就是將系統使用Boolean Expressions來呈現,輸入與輸出的關係就有如條件班達成。

[4]則是透過程序流程來分析結果,當然所耗的資源都不盡相同。

Reference

<1>Verilog Digital System Design - RT Level Synthesis, Testbench and Verification

Thursday, January 17, 2013

Processors in embedded systems [Web]

Embedded Processor分為以下兩大類

Microprocessors (μP) 

是用來整合控制周圍系統的晶片,如記憶體。

這項技術從1968年由CADC開始,接者,Gilbert Hyatt, TMS 1000, Intel 4004, Pico/General instrument, For-Phase System AL1

有了巨人的肩膀,亂世群雄的時代就此展開,8-bit, 16-bit, 32-bit, 64-bit, Multicore

其中也將設計結構作為兩種區分,<5>會有所解釋!

RISC(Reduce Instruction Set Computer)

   MIPS(Microprocessor Without Interlocked Pipeline Stage)

CISC(Complex Instruction Set Computer)

   一個指令可以取代很多RISC的指令。

Microcontrollers (μC, MCU)

已經將許多周邊晶片給整合在一起,為了能夠降低成本和功率的考量下所設計出來的。

Program memory in the form of NOR flash or OTP ROM is also often included on chip, as well as a typically small amount of RAM. 

 

但各有其中之優勢,所以兩者都還存在着。

 

Reference 

<1>http://en.wikipedia.org/wiki/Embedded_system#Processors_in_embedded_systems

<2>http://en.wikipedia.org/wiki/Microprocessor

<3>http://en.wikipedia.org/wiki/MIPS_architecture

<4>http://en.wikipedia.org/wiki/Reduced_instruction_set_computing

<5>http://en.wikipedia.org/wiki/Instruction_set_architecture

<6>http://en.wikipedia.org/wiki/Complex_instruction_set_computing

<7>http://en.wikipedia.org/wiki/Microcontroller

Wednesday, January 16, 2013

How to design an FPGA from scratch [Web]

閱讀到一篇真的對新手很有幫助的一篇文章。

作者 Sven Andersson可以說是一位ASICs的先驅,

他的BLOG當中真的有很多值得拿來分析的文章。

今天先來介紹一下,他給剛踏入這塊領域的新手有什麼建議呢?

FPGA design checklist 粒粒扣扣14項:

或許還沒有接觸過的人會想為什麼要有這幾項?我就加入我的想法分享給各位囉,當然我也整理了一下順序!

 

「1」Make sure you have plenty of time to spare.

其實這一點放在第一點不為過,因為要設計好的FPGA程式真的需要很多時間,如果只想花少時間就想做好它。

那真得有些挑戰,就像Library來說,可能C語言來做數學運算可以找個函示來用,但FPGA要設計出來可是需要鬼斧神工的技術呢!!

「2」Find a decent computer.

正所謂 工欲善其事,必先利其器。就是這個道理。

「3」If you can afford it, add a big display.

螢幕越大看的視窗越多,FPGA設計是需要有很多視窗來觀看其設計和模擬。

「4」Decide which operating system to use.

這一點其實跟第「5-8」有很大的關係,因為作業系統的不同,

工具軟體的資源就有所不同,當然Windows系統所擁有的工具軟體是最多的。

「5」Select an FPGA vendor.

「6」Download the FPGA design software.

「7」Choosing a logic simulator.

「8」Choosing a synthesis tool.

 

「9」Pick out a suitable development board.

能用的實驗板很多,但各有所優缺點,這就要看設計者如何取捨。

「10」Select an embedded processor to use.

這部分就比較專業一些,簡單來說挑一個比較熱門一點的比較容易上手,不熱門的也有它的優勢但就看設計者如何取捨。

我這也做了點小整理

「11」Consider using a virtual machine (VM).

我想~~還是為了節省模擬與合成的時間吧!在我的文章中也有提到BUG是個夢魘啊!!!

「12」Add the latest service packs.

就把所有軟體更新吧!!!更新有更新的好,但也有可能更新後就不知道怎麼用了~呵呵

「13」Learn C programming.

這就不在話下了~應該的!!

「14」Read my tutorial (grin) .

 

Referance

<1>http://eetimes.com/design/programmable-logic/4015129/How-to-design-an-FPGA-from-scratch?CID=EMBEDIT

<2>http://en.wikipedia.org/wiki/Embedded_system#Processors_in_embedded_systems

<3>http://en.wikipedia.org/wiki/Application-specific_integrated_circuit

 

 

The art of FPGA construction FPGA的建構藝術 (3) 實體呈現


0108esdSmith03sm

 

 

 

 

 

 

 

等到程式碼都完成了,該如何驗證呢?

這是每個設計者都想知道,簡單來說就是找到Compile給它按下去就行了~~

而在FPGA會有兩種方式,一種是模擬,另一種則是合成。

依我經驗為例,能透過模擬就模擬,畢竟要合成出實際的電路在燒入到硬體內,真的是一大工程呢。

至於FPGA它的合成作業是如何達成呢?

就如圖示所表示,有三大階段,

[1] 將程式碼或圖像設計轉換成RTL。

[*2] 再將RTL的邏輯電路加以最佳化,除減少時間程序外也能減少成本。

[3] 再將最後的電路合成出你所要硬體的對應表(Netlist)。

 

這樣就大功告成啦~~

Monday, January 14, 2013

The art of FPGA construction FPGA的建構藝術 (2) 程式碼編排

基本上,一個程式會有四大架構,

文章內是提到是VHDL的格式,但我想也是用於Verilog當中。

[1] Optional Heading Section

    檔頭部分,通常會寫一些重要的資訊,以及如何使用這套模組(Module)。

好讓第一次使用的人能夠快速上手,給用過的人能夠重新回想,還有一些歷史更改記錄。

[2] Library Declaration 

    宣告用了哪寫資料庫,可以提醒人記得匯入哪些資料到專案中。

[3] Entity Declaration

    其實,Module就是黑盒子的觀念一樣,你把輸入給黑盒子裡面做什麼不重要,

但要得到你想要的輸出,這樣才能達到簡化的目標。因此,輸入及輸出的訊號對Module來說可是很重要的。

為了能夠有效的整理利用就把它們放在此區塊吧。

[4] Architecture Section

    接著,最後的區塊就是給設計者設計的地方囉!!

0108esdSmithL02sm

 

 

 

 

 

 

 

 

 

 

 

 

 

下面有五個小訣竅可以幫助減少錯誤。

[1] 常常註解你的程式碼!!!

你覺得你記得住?等到一年後拿來看再說吧~

[2] 用空白鍵或Tab鍵來增加可讀性。

[3] 變數名稱的命名方式。

    (1) 命名盡量短而好記。舉例來說,

         active low chip enable  

    X active_low_chip_enable

    O CEn_n

    (2) 用“_”來加以敘述變數用途。舉例來說,

        負緣觸發的訊號,可以在變數名稱後面多加個n, _n, _b, *來提醒自己。

[4] 盡量止少使用Function。

[*5] Synchronize signals to change on a clock edge

       正負觸發的問題常常會影響訊號同步的問題。

 

繼續…看下去

 

Reference : 

http://www.embedded.com/design/configurable-systems/4007481/3/The-art-of-FPGA-construction

http://www.embedded.com/design/configurable-systems/4007481/4/The-art-of-FPGA-construction

 


The art of FPGA construction FPGA的建構藝術 (1) 基本概念

Working with FPGA isn't intimidating when you know the basic techniques and options.

很簡單的開宗明義,如果懂得去瞭解FPGA的基礎,那就什麼都不害怕了!!

但該如何去瞭解呢?在這部落格裡我想分享我的想法及思維,當然不是最完善的敘述。

但如果想討論的人歡迎一起研究!!

由於功力太淺無法直接憑空分享,所以我都借由文章來產生共鳴。今天的文章為~

http://www.embedded.com/design/configurable-systems/4007481/1/The-art-of-FPGA-construction

 

The key to good communication is having an understanding of the development process. A solid understanding will help you comprehend and extract relevant information for status reports, define schedule tasks, and allocate appropriate resources and time.There have been many times when my FPGA knowledge has allowed me to detect and correct errors, such as wrong part numbers or misuse of terms and terminology found in requirements and other documents.

其實寫FPGA是一個非常龐大的程式碼,有可能是一堆人完成的,所以溝通協調是非常重要的。

就算是一個人也會忘記當初所寫的,所以好的程式排版註解都是很重要的,可以提高效能和準確度。

不然暗藏臭蟲都毫無所知無從著手啊!!!


0108esdSmith01

 

 

 

 

 

 

 

 

 

 

 

 

 

圖示簡單地告訴我們設計FPGA有兩種概念的方式,

HDL的程式碼和Schematic Capture,

代表性的工具軟體分別為

Viewlogic's ViewDraw and HDL's EASE

CodeWright and Scriptum

其中HDL也有兩種設計概念,Structural and behavioral。

Structural就與Schematic Capture的概念雷同,利用圖像的方式拉移來完成。

Behavioural則是用寫程式碼來完成,知名的程式語言為VHDL, Verilog,也有Altera自己的語言AHDL等等~~


Continue

Tuesday, January 8, 2013

Parallels Desktop Suspending

要啓動虛擬伺服器卻卡在這個畫面進不去。

Screen Shot 2013-01-08 at 11.50.01 PM

 

 

 

 

 

 

 

 

 

 

 

 

 

請試試看以下做法,

Resolution

On the Host computer, open the Activity Monitor application from Finder -> Applications -> Utilities and find the following process:

In Parallels Desktop 5,6 and 7

prl_vm_app


In Parallels Desktop 


Parallels VM

 

Highlight this process, click 'Quit Process' and choose 'Force Quit' Option.

 

細節請參考。

http://kb.parallels.com/6338

Register Transfer Level Design with Verilog (1) [ebook]

設計程式之所以有趣不外乎是它的千變萬化,同樣的結果卻有不同的寫法。 但這些不同寫法當中也並沒有分誰對誰錯,也沒有制定標準來規範何事該用何解。 這也就是我們設計者的珍貴!! [1] Primitive Instantiations 在Verilog中最基本的邏輯...