推 Seaka: 原來數位邏輯也要上機? 0 0" 140.115.235.65 12/04
description
Transcript of 推 Seaka: 原來數位邏輯也要上機? 0 0" 140.115.235.65 12/04
推 Seaka: 原來數位邏輯也要上機? 0 0" 140.115.235.65 12/04推 tlyeh: 工程師 什麼都要上ㄚ ( 不要亂想 ) 十八般 武藝 都要使得出來ㄚ 沒看到 我電工木工 水泥工金工化工生醫 ? 平常都得用出來ㄚ 140.115.7.94 12/05→ tlyeh: 學會了 就用得出來 只是知道卻沒學會 140.115.7.94 12/05→ tlyeh: 就變成 唸書無用 的情形了 140.115.7.94 12/05→ lambdadriver: 真 ... 真不愧是老師 ... 140.115.214.238 12/05→ lambdadriver: 那我們上機是要幹嘛 ... 打電動 !? 140.115.214.238 12/05推 xiiuili: 老師真強 ......@@" 140.115.214.56 12/05→ xiiuili: 根據助教的說法 ... 140.115.214.56 12/05→ xiiuili: 上機 = 模擬電路 = 以前的實驗電腦化 @@" 140.115.214.56 12/05推 onepieceQ: 是喔 !!! 140.115.214.246 12/05推 ant3690: 好...抽像 140.115.65.30 12/05推 tlyeh: 昨天上課到後來 怎麼變成是鬧場的樣子 140.115.7.94 12/06→ tlyeh: 助教 故做 輕鬆狀 同學仍然要有節制分寸 140.115.7.94 12/06→ tlyeh: 弄到 妨礙上課的情形 就過分了 !! 要記住 140.115.7.94 12/06→ tlyeh: 到外面做事的時候 也一體適用 否則會被人 ! 140.115.7.94 12/06 作者 morphous (SCP 動起來吧 ~~~) Wed Dec 6 13:13:32 2006 看板 ME-1A 標題 數位邏輯 12.05 實驗課投影片http://140.115.67.230/ncume_dl_verilog_intro.ppt推 jackchang:P4 使用軟體是 ModelSim 220.134.24.151 12/06→ jackchang:p8~p10 的程式範例在 modeule 後面需加分號 220.134.24.151 12/06→ jackchang:p14 中 always 的用法 nogedge 改成 negedge 220.134.24.151 12/06推 morphous: 嘖嘖嘖 學長昨天沒來上課喔 .... 140.115.67.228 12/06推 morphous: 那是大魔王故意設計的 bug 啦 ... 140.115.67.228 12/06
數 位 邏 輯 軟 體 設 計 實 驗
FPGA (Filed Programmable Gate Array)
CPLD (Complex Programmable Logic Device)
差異 : CPLD 適合用來實現各種
運算和組合邏輯 時間特性預估容易 有固定內部連線電路的邏
輯功能來編程 編程採用 E2PROM 或 Flas
h 技術,使用時外部不需要另外的記憶儲存元件
Verilog
FPGA 適用於實現循序邏輯 分段式佈線結構使得其時間
延遲的預測變的困難 具有更大的靈活性透過改變
內部電路佈線來編程 可編程邏輯閘數大 許多編程採用 SRAM 技術,
所以使用時外部需要搭配記憶儲存元件存放編程訊息使用方法較複雜
VHDL
使用軟體 :
Mdelsim
ISE ( Xilinx Project Navigator)
Verilog HDL 簡介
Outline Introduction 四種描述層次 基本單位的描述
module port 常用的 Logic Gates
其他的語法協定
Introduction Verilog HDL 是一種硬體描述語言,用來描
述電路功能或是架構。 只要有 C 語言的相關經驗即可容易上手。 一般的邏輯合成工具普遍都有支援 Verilog H
DL 。 大部分的製造商皆有提供 Verilog HDL 的函
數庫,因此用 Verilog HDL 設計晶片在廠商方面有較多的選擇。
四種描述層次1. Behavioral level :
只考慮模組中的功能和函數,不必考慮硬體方面的詳細電路,如同是在寫 C 語言一樣。
2. Dataflow level :說明資料如何在暫存器中儲存和傳送,和資料處理的方式。
3. Gate level :模組是由 Logic gates 所構成的,使用 Logic gates 來設計電路。
4. Switch level :最低層次,設計者需知道電晶體的元件特性。
Gate level :
Behavioral
module Beh_AND ( in1 , in2 , Out)
input in1 , in2 ;
output Out ;
reg Out ;
always @ ( in1 or in2 )
begin Out = in1 & in2
end
endmodule
Data Flow
module DF_AND ( in1 , in2 , Out)
input in1, in2 ;
output Out ;
wrie Out ;
assign Out = in1 & in2 ;
endmodule
四種準位數值
0 1 X : 不確定 Z : 高阻抗
常用敘述 assign
assign
驅動某個值到 wire , wand , wor ,tri
用於資料處理模型 Data Flow Model wire a,b,c; // 宣告三個接縣型態的變數
assign a= b & c; //a = b 和 c 作 and 運算
常用敘述 always
可隨時監督外界輸出入 port ,訊號有變化時即告訴模組內部配合相對應的工作
always @(a or b)
begin
f=a&b&c;
end
always 例子 :
always @( posedge clock)
begin
end
// posedge 正緣觸發// nogedge 負緣觸發
wire 敘述
接線是連接硬體元件之連接線 接線必須被驅動才能改變它內函值 內定為一個位元值 z
reg
暫存器 功能與變數很像 , 可以給定一個數值 ,主要功能在保持
住電路中某個值 , 不必像 (wire) 要被驅動才能改變它的內函值
內定為一個位元值 x
選用 wire 或 reg 時機
wire 必須配合 assign 來使用 ,且不能出現在 always區塊描述裡 Wire a,b,c;
assign a &c; reg 必須放在 always區塊描述裡 input [3:0] a, b;
output [3:0] c;
reg [3:0] c;
always @(a or b)
Begin
c=a+b;
end
二元逐位運算子
~ NOT & AND | OR ^ XOR ~^ XNOR
範例
Assign a= ~ b ; // not // 若 b= 4’b0010 // 則 a= 4’b1101
Assign a= b & c; // and // 若 b= 4’b0011 // 若 c= 4’b1010 // 則 a= 4’b0010
範例
Assign a= b|c ; // or // 若 b= 4’b0011 // 若 c= 4’b1010 // 則 a= 4’b1011
Assign a= b ^ c; // and // 若 b= 4’b0011 // 若 b= 4’b1010 // 則 a= 4’b1001
單元運算子
& = AND , ~& = NAND , | = OR , ~| = NOR ^ = XOR ,~^ = NXOR
assign a=&b ;
assign a=|b;
邏輯運算子
!= NOT , &&=AND , || = OR 三種!= NOT條件 : 不成立 , 經過 ! 後 : 成立對於一特定一比輸入資料任何一為元 , 只要一位元為 1運算結果為 0
或只要一位元為 0運算結果為 1
a =!a
0=1 , 1=0 , 00=1 , 01 = 0 , 10=0 , 11=0 , 00=1
&&=AND
對於二個
基本單位 - 模組( module) Module 是以 input, output, bi-direction ports
和外部溝通。 一個已經設計好的 Module 可以放在另一個
Module之中使用。 Ex.
module fulladd4(SUM,C_OUT,A,B,C_IN);…endmodule// 有 port 的 modulemodule Top;…endmodule/* 沒有任何的 port 的 modole ,常用於模擬之用*/
模組的名字 ( 自行命名 )
Input、 Output
Level 的概念 Top Level Module 可以包含許多的其他 Modules 。
Modules之中可能還有其他的 Modules 。
Top Level Module X
Module T1
Module T2
Module T3
A
B
A
B
A
B
範例module X(a,b,c,d,e,f);…… T1 jack1(y1,y2,x); T2 jack2(k1,k2,q); T3 jack3(z1,z2,p);…endmodule
module T1(u1,u2,u3);…endmodule
module T2(v1,v2,v3);…endmodule…
Top Level Module X
Module T1
Module T2
Module T3
A
B
A
B
A
B
基本單位 -port 與 module 外部的信號溝通。 分為輸出 (output)、輸入 (input)、雙向 (inout) 如果你只有宣告 input,output,inout ,則將被視為是 wire 的型態。 如果想要維持信號到下一個 clock ,則需要宣告成 reg 的型態
(序向邏輯電路會用到 ) Ex. output q;
reg q; //這樣才可以儲存資料 向量 :
wire 和 reg 皆可宣告成向量Ex. wire [7:0] a; //8-bit a 變數 reg [40:0] address; //41-bit address 變數
Ports 的連接規定 Port 可以浮接,主要是用來除錯。
Ex.fulladd4 fa0(SUM, ,A,B,C_IN); 輸出輸入的連接規定 :
Module T1
常見的 net 型態 :ex. wire c;
Module X
模擬用 Error ports
module Top;
reg [3:0] A,B;
reg C_IN;
reg [3:0] SUM;
wire C_OUT;
fulladd4 fa0(SUM,C_OUT,A,B,C_IN);
…
endmodulefulladd4 的輸出不可以接到 reg 型態的 sum
module 的別名,可以隨便取,但是不可相同Call
fulladd4
module fulladd4(s,co,a,b,cin);……endmodule