2011年12月18日 星期日

20111212 今天沒電腦用

今天因為教室更新電腦硬體

系統還沒安裝完

所以今天只能看教授方投影片上課

教授也不浪費時間就一次把下星期的進度教完

下星期就所有時間都拿來練習和考上機考

今天教了一些系統程序的概念

也教了許多和C++類似的語法和運算符號

講解了Verilog的應用範圍

了解到這門課對我們未來的影響

雖然今天沒有碰到電腦

但也是對Verilog有了更深的了解

2011年12月11日 星期日

20111205 上機考

今天去考緊張又刺激的上機考

雖然說題目不難

但還是畫電路圖還是有點複雜

怕緊張或一時大意出錯

還是要很謹慎的作答

上機考考卷

程式碼

跑出結果

結果波形圖

其實電路圖仔細慢慢畫

只要電路圖是正確的寫程式碼就不難了~

2011年12月4日 星期日

20111128 印出

因為這陣子開始上機考

老師為了讓我們有多一點時間練習

就沒有上太多的進度跟新作業的練習

之前印出都只知道display

今天多了個write

write和dislay的差別在於display和display之間會自動換行

write則不會

除了講義上的示範之外

我另外自己打了一段簡單的印出程式碼

其中含有display和write

從印出的結果就能明顯看出兩者的差異

display和write程式碼

印出的結果


除了印出我們自己打上去的文字外

還可以印出每個指令執行時的時間點

單位是奈秒

印出時間的程式碼

印出的結果



雖然上機考並不會很難

但還是會希望做足準備再去考

不過得知考不好可以重考且不扣分後就有比較放鬆了

2011年11月27日 星期日

20111121 延遲


今天教了區塊的概念和延遲

稍微練習了一下延遲的程式碼

試試看編輯不同的延遲程式碼

跑出的結果會有什麼不同

第一個延遲的程式碼

跑出的結果

第二種延遲的程式碼

結果

每個initial裡

也就是每個區塊

時間的計算都是獨立的

我將兩次相同的內容設置成不同區塊的編排方式

跑出來的結果就會有所不同

同一個區塊內的延遲時間是累加的

也就是相對的時間而不是絕對的時間

基本上只要這兩個大點注意好就不太會算錯了



2011年11月20日 星期日

20111114 8位元加法器&上機考練習

上次挑戰把兩個1位元加法器合併成一個2位元加法器失敗

經過一個禮拜的時間讓我們自細思考

這次要挑戰合併出一個8位元的加法器

因為有一個禮拜的時間消化上次失敗的原因

這次很快的就可以抓到方向編輯程式碼

只是還沒有非常熟悉

所以還是花了一點時間修改

8位元加法器程式碼



8位元加法器跑Verilog結果

8位元加法器跑Verilog波形圖


編輯完8位元加法器後

老師要我們稍微練習一下期末上機考的模式

就先拿輔助手冊的內容來練習

輔助手冊Verilog程式碼


跑Verilog結果


跑Verilog波形圖


雖然這次練習的上機考內容不難

但為了避免之後考試時一時緊張或時間不夠

還是要自己多找別的題目練習幾次

2011年11月13日 星期日

20111107 2位元加法器

今天要利用上次多公器的概念

自己寫一個一位元的加法器電路

再想辦法把兩個一位元的加法器電路併起來

形成一個2位元的加法器

但是不知道為什麼

一位元的加法器很快就寫出來了

就是一直卡在把兩個併起來的地方

努力戰鬥到最後但時間還是到了

下課前沒有想辦法把它做出來

老師就公布了答案

2位元加法器程式碼


2位元加法器跑verilog結果

2位元加法器跑verilog的波形圖


今日主要的筆記

2011年10月24日 星期一

20111024 Verilog 64位元多工器

前幾個禮拜所練習的都是1-bit的多功器

在我們稍為瞭解Verilog的語法後

這個星期要練習到64-bit的多功器


mux~mux64為階乘的關係

一個mux2由兩個mux組成

一個mux4由兩個mux2組成

一個mux8由兩個mux4組成

以此類推至mux64

以Verilog語法的角度來看的話

mux編輯完後編輯mux2時會需要呼叫到兩次mux

編輯mux4時會需要呼叫到兩次mux2

編輯mux8時會需要呼叫到兩次mux4

以此類推至mux64

這點也和C++一樣

可以將先前編輯完的運算方式呼叫出來用

64-bit 多工器程式碼


















模擬結果及波形圖











這個禮拜老師沒把所有的做法都教我們

老師希望我們再過程中遇到的困難有辦法自己解決

經過google大神的幫助輸入信號的問題已經解決了

但要跑程式的時候還是一直出現問題

最後發現原因是直接複製PDF上的程式碼時會複製到伊些特殊字元

但貼上後看不出來有什麼不一樣

所以最後我自己全部用打的



筆記
















































2011年10月17日 星期一

20111017 Verilog基本語法編輯

今天老師把上次的練習又講了一遍

讓上次沒練習到的同學利用今天趕快補回來

今天多講了幾種Verilog語法編輯的一些基本用法和常犯的錯誤

練習時間就用課本舉的四個簡單例子自己實際操作



第一種編輯方式-正常編輯










成功跑出"Hellow Verilog"


第二種編輯方式-以空格取代換行



成功跑出"Hellow Verilog"



第三種編輯方式-全部用換行



成功跑出"Hellow Verilog"



第四種編輯方式-在"..."之間換行



跑出Error的圖示
















在輸入要印出內容的"..."內不可以換行!!!

其他筆記
(因為有版權的問題所以沒有把全部的筆記PO上來)




















































其實Verilog滿多基本語法都和C++一樣

換行 、註解等
所以學完C++再學Verilog其實滿容易上手的

2011年10月3日 星期一

20111003 Verilog 語法概論

今天不知道什麼原因

可能下雨吧

來上課的人頗少

老師說等那些人五分鐘

大家開著Facebook聊著聊著

就這樣一節課快過了...

老師決定要開始上課了




今天是第一次用SynaptiCAD寫Verilog程式碼

但也沒寫到什麼

只是先拿現成的稍微改一下熟悉Verilog的架構跟SynaptiCAD的操作

不過這次這個書上簡單的電路圖就算要自己寫也不難寫

只怕再過幾個禮拜要寫的電路跟實驗課一樣讓我們做到腦袋也短路了




今天的程式碼module top的部分是複製範例來改的

只要把各個輸入源的時脈和腳位名改一下就好了

但注意每次宣告腳位時 ( ) 內的順序要一樣!!!
module name的部分是從電子書裡面的範例複製的

module system_clock的部分是直接複製範例連改都不用改





將編輯好的文字檔加到SynaptiCAD裡

模擬如果成功無誤右下角方塊顏色為綠色





模擬出來的波形圖





今天的筆記