PLD設計方法及步驟
發布時間:2007/8/20 0:00:00 訪問次數:606
1.電路邏輯功能描述
PLD器件的邏輯功能描述一般分為原理圖描述和硬件描述語言描述,原理圖描述是一種直觀簡便的方法,它可以將現有的小規模集成電路實現的功能直接用PLD器件來實現,而不必去將現有的電路用語言來描述,但電路圖描述方法無法做到簡練;硬件描述語言描述是可編程器件設計的另一種描述方法,語言描述可能精確和簡練地表示電路的邏輯功能,現在在PLD的設計過程中廣泛使用,并且有更加滸的趨勢,常用的硬件描述語言有ABEL,VHDL語言等,其中ABEL是一種簡單的硬件描述語言,其支持布爾方程、真值表、狀態機等邏輯描述,適用于計數器、譯碼器、運算電路、比較器等邏輯功能的描述;VHDL語言是一種行為描述語言,其編程結構類似于計算機中的C語言,在描述復雜邏輯設計時,非常簡潔,具有很強的邏輯描述和仿真能力,是未來硬件設計語言的主流。
2.計算機軟件的編程及模擬
不管是用硬件描述語言描述的邏輯還是用原理圖描述的邏輯,必須通過計算機軟件對其進行編譯,將其描述轉換為經過化簡的布爾代數表達式(即通常的最簡與或表達式),編譯軟件再根據器件的特點將表達式適配進具體的器件,最終形成PLD器件的熔斷絲文件(通常叫做JEDEC文件,簡稱為JED文件)。通常在將用戶設計的邏輯下載到具體器件中前,為了檢查設計的結果是否正確,通常可以通過計算機軟件進行模擬,檢查其設計結果是不否與設計要求相符。
GAL編程,一般可以使用ABEL語言編程,ABEL的語法基本上是由一組邏輯表達式進行敘述,一片GAL能幫我完成什么功能呢?或者說能改
變成什么樣的芯片呢?對GAL來說,由于內部的邏輯電路(門)比較少,一般只能完成一些簡單的邏輯轉換、簡單的計數器(位數少)、鎖存器
等。一般簡單來講,GAL的可用輸入比輸出多,如果想用他做地址譯碼器是比較合適的,在單片機的應用中,往往需要用幾個不同的門電路組
合或加上138之類的3-8譯碼器組合,譯出幾個特定地址,這才是GAL的專長,可以在一個芯片內完成,使得你的電路簡潔,而且輸入輸出在不
違背基本約定的前提下可以隨意調換,使得布板走線容易。先看看下面的一個例子:
有時候我需要兩組不同的互不關聯的邏輯電路,我們也可以用一個GAL完成,只要引腳和內部宏單元夠用,例如下面我設計了一個LED七
段碼的譯碼器,還有IO富裕,則我可以利用多余的IO設計一個簡單的地址譯碼電路,下面的程序是為了使一般的七段碼LED數碼管顯示多幾個
特殊字符,使用了5條輸入數據線,多余的IO我們獨立的制作了一個任意邏輯電路:
module BCD7
similar to the 7449
" f| g |b
" --- 筆段定義
" e| d |c
" ---
bcd7 device 'P16V8R';
bcd = [D4,D3,D2,D1,D0];
led = [a,b,c,d,e,f,g];
" 共陽結構數碼管
@dcset
truth_table ( bcd -> [ a , b , c , d , e , f , g ])
0 -> [ ON, ON, ON, ON, ON, ON, OFF]; "0
1 -> [OFF, ON, ON, OFF, OFF, OFF, OFF]; "1
2 -> [ ON, ON, OFF, ON, ON, OFF, ON]; "2
&nb
1.電路邏輯功能描述
PLD器件的邏輯功能描述一般分為原理圖描述和硬件描述語言描述,原理圖描述是一種直觀簡便的方法,它可以將現有的小規模集成電路實現的功能直接用PLD器件來實現,而不必去將現有的電路用語言來描述,但電路圖描述方法無法做到簡練;硬件描述語言描述是可編程器件設計的另一種描述方法,語言描述可能精確和簡練地表示電路的邏輯功能,現在在PLD的設計過程中廣泛使用,并且有更加滸的趨勢,常用的硬件描述語言有ABEL,VHDL語言等,其中ABEL是一種簡單的硬件描述語言,其支持布爾方程、真值表、狀態機等邏輯描述,適用于計數器、譯碼器、運算電路、比較器等邏輯功能的描述;VHDL語言是一種行為描述語言,其編程結構類似于計算機中的C語言,在描述復雜邏輯設計時,非常簡潔,具有很強的邏輯描述和仿真能力,是未來硬件設計語言的主流。
2.計算機軟件的編程及模擬
不管是用硬件描述語言描述的邏輯還是用原理圖描述的邏輯,必須通過計算機軟件對其進行編譯,將其描述轉換為經過化簡的布爾代數表達式(即通常的最簡與或表達式),編譯軟件再根據器件的特點將表達式適配進具體的器件,最終形成PLD器件的熔斷絲文件(通常叫做JEDEC文件,簡稱為JED文件)。通常在將用戶設計的邏輯下載到具體器件中前,為了檢查設計的結果是否正確,通常可以通過計算機軟件進行模擬,檢查其設計結果是不否與設計要求相符。
GAL編程,一般可以使用ABEL語言編程,ABEL的語法基本上是由一組邏輯表達式進行敘述,一片GAL能幫我完成什么功能呢?或者說能改
變成什么樣的芯片呢?對GAL來說,由于內部的邏輯電路(門)比較少,一般只能完成一些簡單的邏輯轉換、簡單的計數器(位數少)、鎖存器
等。一般簡單來講,GAL的可用輸入比輸出多,如果想用他做地址譯碼器是比較合適的,在單片機的應用中,往往需要用幾個不同的門電路組
合或加上138之類的3-8譯碼器組合,譯出幾個特定地址,這才是GAL的專長,可以在一個芯片內完成,使得你的電路簡潔,而且輸入輸出在不
違背基本約定的前提下可以隨意調換,使得布板走線容易。先看看下面的一個例子:
有時候我需要兩組不同的互不關聯的邏輯電路,我們也可以用一個GAL完成,只要引腳和內部宏單元夠用,例如下面我設計了一個LED七
段碼的譯碼器,還有IO富裕,則我可以利用多余的IO設計一個簡單的地址譯碼電路,下面的程序是為了使一般的七段碼LED數碼管顯示多幾個
特殊字符,使用了5條輸入數據線,多余的IO我們獨立的制作了一個任意邏輯電路:
module BCD7
similar to the 7449
" f| g |b
" --- 筆段定義
" e| d |c
" ---
bcd7 device 'P16V8R';
bcd = [D4,D3,D2,D1,D0];
led = [a,b,c,d,e,f,g];
" 共陽結構數碼管
@dcset
truth_table ( bcd -> [ a , b , c , d , e , f , g ])
0 -> [ ON, ON, ON, ON, ON, ON, OFF]; "0
1 -> [OFF, ON, ON, OFF, OFF, OFF, OFF]; "1
2 -> [ ON, ON, OFF, ON, ON, OFF, ON]; "2
&nb