數(shù)字系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第1頁
數(shù)字系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第2頁
數(shù)字系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第3頁
數(shù)字系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第4頁
數(shù)字系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第九章數(shù)字系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

9.1時(shí)鐘電路的設(shè)計(jì)與實(shí)現(xiàn)

9.2UART數(shù)據(jù)接收發(fā)送電路設(shè)計(jì)與實(shí)現(xiàn)

9.3人機(jī)接口電路的設(shè)計(jì)與實(shí)現(xiàn)

9.48255并行接口電路的設(shè)計(jì)與實(shí)現(xiàn)9.1時(shí)鐘電路的設(shè)計(jì)與實(shí)現(xiàn)

9.1.1模24計(jì)數(shù)器的VHDL設(shè)計(jì)

9.1.2模60計(jì)數(shù)器的原理圖設(shè)計(jì)

9.1.3頂層文件設(shè)計(jì)9.1時(shí)鐘電路的設(shè)計(jì)與實(shí)現(xiàn)

數(shù)字系統(tǒng)設(shè)計(jì)一般采用自頂向下的層次化設(shè)計(jì)方法,在MAX+plusⅡ環(huán)境下可利用層次化設(shè)計(jì)方法實(shí)現(xiàn)自頂向下的設(shè)計(jì)。電路設(shè)計(jì)時(shí),分析設(shè)計(jì)要求,劃分模塊,進(jìn)行低層設(shè)計(jì),然后進(jìn)行頂層設(shè)計(jì)的連接。下面以圖形和文本混合輸入為例,設(shè)計(jì)一個(gè)時(shí)鐘電路,時(shí)鐘電路由模60計(jì)數(shù)器構(gòu)成秒、分電路,模24計(jì)數(shù)器構(gòu)成小時(shí)電路,生產(chǎn)各模塊的符號文件,最后用時(shí)、分、秒模塊構(gòu)成頂層時(shí)鐘電路。9.1.1模24計(jì)數(shù)器的VHDL設(shè)計(jì)

1.實(shí)體端口定義模24的計(jì)數(shù)器的實(shí)體端口定義如下:ENTITYcntm24vIS

PORT(en:INstd_logic;

clr:in

std_logic;

clk:in

std_logic;

cont:out

std_logic;

qh:bufferstd_logic_vector(3downto0);

ql:bufferstd_logic_vector(3downto0));END;輸入端口為計(jì)數(shù)使能en、清零clear和時(shí)鐘clk,其數(shù)據(jù)類型為std_logic標(biāo)準(zhǔn)邏輯類型;輸出端口cont的數(shù)據(jù)類型為std_logic標(biāo)準(zhǔn)邏輯類型;小時(shí)信號qh、ql的數(shù)據(jù)類型為std_logic_vector(3downto0)向量標(biāo)準(zhǔn)邏輯類型。2.模24計(jì)數(shù)器VHDL設(shè)計(jì)LIBRARYieee; --調(diào)用程序包USEieee.std_logic_1164.ALL;USEieee.std_logic_unsigned.ALL;--------------------ENTITYcntm24vIS --定義實(shí)體端口

PORT(en:INstd_logic;

clr:in

std_logic;

clk:in

std_logic;

cont:out

std_logic;

qh:bufferstd_logic_vector(3downto0);

ql:bufferstd_logic_vector(3downto0));END;-----------------------------ARCHITECTUREbehOFcntm24vIS --結(jié)構(gòu)體設(shè)計(jì)

BEGINcont<='1'when(qh="0010"andql="0011"anden='1')else'0';

PROCESS(CLK,clr)BEGIN

IF(clr='0')THEN

qh<="0000";

ql<="0000";

elsif(clk'eventandclk='1')then

IF(en='1')THEN

if(ql=3)then

ql<="0000";

if(qh=2)then

qh<="0000";else

qh<=qh+1;endif;else

ql<=ql+1;endif;endif;endif;endprocess;endbeh;完成模24計(jì)數(shù)器的設(shè)計(jì),且仿真通過之后,執(zhí)行菜單File下的CreateDefaultSymbol命令,生成符號cntm24v,該符號將成為當(dāng)前項(xiàng)目庫中的一個(gè)元件。9.1.2模60計(jì)數(shù)器的原理圖設(shè)計(jì)這里采用原理圖輸入方式設(shè)計(jì)模60計(jì)數(shù)器,輸入信號有計(jì)數(shù)使能en、清零clear、時(shí)鐘clk;輸出信號有ql0、ql1、ql2、ql3、qh0、qh1、qh2以及進(jìn)位輸出。調(diào)用庫中已有的元件符號74161、三輸入與非門nand3、非門not等,構(gòu)成符合要求的計(jì)數(shù)器,圖9.1是模60計(jì)數(shù)器的原理圖。

圖9.1模60計(jì)數(shù)器原理圖

9.1.3頂層文件設(shè)計(jì)

執(zhí)行菜單File下的建立新文件,文件名為clock.gdf。在clock.gdf空白處雙擊鼠標(biāo)左鍵,打開Entersymbol對話框選擇調(diào)用的元件,在元件列表區(qū)可看到已經(jīng)生成的兩個(gè)元件cntm24和cntm60,調(diào)用cntm24和cntm60,連接構(gòu)成時(shí)鐘電路的頂層設(shè)計(jì)文件,clock.gdf文件如圖9.2所示。

圖9.2頂層clock.gdf文件對頂層設(shè)計(jì)文件clock.gdf進(jìn)行編譯和仿真,調(diào)整仿真時(shí)間和柵格尺寸,觀察仿真波形。在Option菜單下選擇GridSize調(diào)整顯示柵格的大小。在File菜單下選擇EndTime設(shè)置仿真時(shí)間。利用左側(cè)工具欄上的波形繪制圖標(biāo),可以方便地對波形文件進(jìn)行編輯,如輸入時(shí)鐘信號clk,en和clr設(shè)置為高電平等。波形文件保存為clock.scf,接下來對該文件進(jìn)行仿真。打開仿真器窗口,單擊Start按鈕,開始仿真,得到如圖9.3所示的仿真波形,觀察時(shí)、分、秒之間的進(jìn)位關(guān)系。選擇芯片,分配引腳,再次進(jìn)行編譯,正確后將設(shè)計(jì)配置到芯片。圖9.3clock.gdf仿真波形完成全部設(shè)計(jì)后,在菜單MAX+plusⅡ下選擇HierarchyDisplay命令,顯示clock文件層次結(jié)構(gòu)如圖9.4所示。圖9.4clock.gdf的層次結(jié)構(gòu)

由圖9.4可見,頂層clock.gdf調(diào)用cntm24v符號和cuntm60符號,cntm24v符號是文本編輯生成的符號文件;cuntm60符號是圖形編輯生成的符號文件。符號cntm24v和cuntm60又各自調(diào)用了LPM庫中的宏單元LMP-ADD-SUB:120和74160符號。9.2UART數(shù)據(jù)接收發(fā)送電路設(shè)計(jì)與實(shí)現(xiàn)9.2.1UART程序設(shè)計(jì)9.2.2UART程序仿真9.2UART數(shù)據(jù)接收發(fā)送電路設(shè)計(jì)與實(shí)現(xiàn)

通用異步數(shù)據(jù)接收發(fā)送方式UART(UniversalAsynchronousReceiverTransmitter)不僅能實(shí)現(xiàn)接收發(fā)送方相互之間通訊,同時(shí)還能滿足PC機(jī)、微處理器等設(shè)備之間的數(shù)據(jù)通信。串行外設(shè)都會(huì)用到RS232串行接口,傳統(tǒng)上采用專用的集成電路即UART專用芯片實(shí)現(xiàn),如TI、EXAR、EPIC的550、452等系列芯片。有時(shí),人們不需要使用完整的UART的功能,而對于多串口的設(shè)備或需要加密通訊的場合使用UART也不是最佳選擇。如果采用FPGA/CPLD器件,那么就可以將所需要的UART功能集成到FPGA內(nèi)部,使用VHDL集成UADT的核心功能,從而使整個(gè)設(shè)計(jì)更加緊湊,更小巧、穩(wěn)定、可靠。

分析UART結(jié)構(gòu),可以看出UART主要由數(shù)據(jù)總線接口和控制邏輯、波特率發(fā)生器、發(fā)送和接受等部分組成,各部分間關(guān)系如圖9.5所示。圖9.5UART結(jié)構(gòu)框圖了解UART的基本組成結(jié)構(gòu)后,需要對各部分的功能進(jìn)行詳細(xì)的分析。假定所要設(shè)計(jì)的UART功能為:數(shù)據(jù)位7位、8位可選,波特率可選,校驗(yàn)方式有奇、偶、無等多種方式。1.波特率的設(shè)定UART的接收和發(fā)送可以采用相同的波特率進(jìn)行,當(dāng)然也可以實(shí)現(xiàn)不同波特率的收發(fā),這里采用相同波特率的收發(fā),波特率可以通過CPU的總線接口進(jìn)行設(shè)置。假設(shè)UART收發(fā)的每一個(gè)數(shù)據(jù)寬度都是波特率發(fā)生器輸出時(shí)鐘周期的16倍,假定按照9600bps的波特率進(jìn)行收發(fā),那么波特率發(fā)生器輸出的時(shí)鐘頻率應(yīng)為9600×16Hz。假定系統(tǒng)提供的時(shí)鐘為1.8432MHz,那么可以用CPU寫入不同的數(shù)值到波特率保持寄存器,然后用計(jì)數(shù)器方式生成所需要的各種波特率,該數(shù)值計(jì)算原則是1843200/(16×所期望的波特率)。如果希望獲得9600Hz的波特率,計(jì)算數(shù)值為1843200/(16×9600)=12(0CH)。

2.數(shù)據(jù)發(fā)送數(shù)據(jù)發(fā)送過程中,需要解決幾個(gè)關(guān)鍵問題:CPU要判斷何時(shí)可以向發(fā)送保持寄存器(THR)寫入數(shù)據(jù)?也就是說CPU要寫入數(shù)據(jù)到THR之前必須判斷當(dāng)前是否可寫?很明顯如果不判斷,發(fā)送的數(shù)據(jù)會(huì)出錯(cuò),除非CPU寫入THR的頻率低于當(dāng)前數(shù)據(jù)傳輸?shù)牟ㄌ芈剩@種情況是極少出現(xiàn)的。CPU寫入數(shù)據(jù)到THR后,何時(shí)THR的數(shù)據(jù)傳送到發(fā)送移位寄存器(TSR)進(jìn)行移位?即處理THR和TSR的關(guān)系。數(shù)據(jù)位有7、8位兩種,校驗(yàn)位有三種,因此發(fā)送的數(shù)據(jù)可能有9、10、11位三種長度,所以需要按照所設(shè)置的傳輸情況分別進(jìn)行處理??梢酝ㄟ^CPU寫一個(gè)端口數(shù)據(jù)設(shè)置數(shù)據(jù)位、校驗(yàn)方式,發(fā)送和接受根據(jù)該數(shù)據(jù)設(shè)置進(jìn)行處理。根據(jù)以上分析,UART的數(shù)據(jù)發(fā)送定義如下信號:txhold:數(shù)據(jù)發(fā)送保持信號,標(biāo)準(zhǔn)邏輯向量型:std_logic_vector(0TO7);txreg

:數(shù)據(jù)發(fā)送存儲(chǔ)器,標(biāo)準(zhǔn)邏輯向量型:std_logic_vector(0TO7);txtag2:查找數(shù)據(jù)標(biāo)志位,標(biāo)準(zhǔn)邏輯型:std_logic;txtag1:清空寄存器,標(biāo)準(zhǔn)邏輯型:std_logic;txparity:存儲(chǔ)器產(chǎn)生奇偶校驗(yàn),標(biāo)準(zhǔn)邏輯型:std_logic;txclk:數(shù)據(jù)發(fā)送時(shí)鐘信號,標(biāo)準(zhǔn)邏輯型:std_logic;txdone:數(shù)據(jù)發(fā)送結(jié)束,標(biāo)準(zhǔn)邏輯型:std_logic;paritycycle:數(shù)據(jù)發(fā)送位校驗(yàn),標(biāo)準(zhǔn)邏輯型:std_logic;txdatardy:數(shù)據(jù)發(fā)送讀操作,標(biāo)準(zhǔn)邏輯型:std_logic;圖9.6給出了一個(gè)奇校驗(yàn)8bit數(shù)據(jù)的發(fā)送時(shí)序圖。

圖9.6UART數(shù)據(jù)發(fā)送時(shí)序圖3.數(shù)據(jù)接收數(shù)據(jù)接收同樣存在9、10、11位三種串行數(shù)據(jù)長度的問題,必須根據(jù)設(shè)置的不同情況將數(shù)據(jù)完整地取下來。接收數(shù)據(jù)時(shí)還有一個(gè)特殊情況,移位時(shí)鐘不是始終存在,移位時(shí)鐘在接受到起始位的中間開始產(chǎn)生,到停止位的中間時(shí)結(jié)束。接受到停止位后,給出中斷信號,并提供相應(yīng)的校驗(yàn)出錯(cuò)、幀出錯(cuò)以及溢出等。數(shù)據(jù)接收時(shí),需引入hunt和idle兩個(gè)信號,hunt為高電平時(shí)表示捕捉到起始位,idle為高電平時(shí)表示不在移位狀態(tài),利用這兩個(gè)信號就可以產(chǎn)生接收所需要的移位時(shí)鐘。根據(jù)上述分析,UART的數(shù)據(jù)接收過程定義如下信號:rxhold:數(shù)據(jù)接收保持信號,標(biāo)準(zhǔn)邏輯向量型:std_logic_vector(0TO7);rxreg

:數(shù)據(jù)接收存儲(chǔ)器,標(biāo)準(zhǔn)邏輯向量型:

std_logic_vector(0TO7);rxparity:數(shù)據(jù)接收校驗(yàn)位,標(biāo)準(zhǔn)邏輯型:std_logic;paritygen:產(chǎn)生數(shù)據(jù)接收校驗(yàn)位,標(biāo)準(zhǔn)邏輯型:

std_logic;rxstop:數(shù)據(jù)接收停止位,標(biāo)準(zhǔn)邏輯型:std_logic;rxclk:數(shù)據(jù)接收時(shí)鐘,標(biāo)準(zhǔn)邏輯型:std_logic;rxidle:數(shù)據(jù)接收空操作,標(biāo)準(zhǔn)邏輯型:std_logic;rxdatardy:數(shù)據(jù)接收準(zhǔn)備讀操作,標(biāo)準(zhǔn)邏輯型:

std_logic;圖9.7是一個(gè)8bit奇校驗(yàn)的接收數(shù)據(jù)時(shí)序圖,假定接收正確,因此沒有給出校驗(yàn)、溢出、幀出錯(cuò)等信號。圖9.7UART數(shù)據(jù)接收時(shí)序圖9.2.1UART程序設(shè)計(jì)1.庫與實(shí)體端口的定義UART的設(shè)計(jì)中,調(diào)用的庫文件有IEEE庫,打開的程序包有:std_logic_1164、

std_logic_arith、

std_logic_unsigned。實(shí)體端口的定義如下:

PORT(clkx16:INstd_logic; --時(shí)鐘

read:INstd_logic; --接收數(shù)據(jù)讀操作

write:INstd_logic; --發(fā)送數(shù)據(jù)寫操作

rx:INstd_logic; --接收數(shù)據(jù)

reset:INstd_logic; --復(fù)位清零

tx:OUTstd_logic; --發(fā)送數(shù)據(jù)

rxrdy:OUTstd_logic; --準(zhǔn)備接收數(shù)據(jù)

txrdy:OUTstd_logic; --準(zhǔn)備發(fā)送數(shù)據(jù)

parityerr:OUTstd_logic; --接收數(shù)據(jù)校驗(yàn)錯(cuò)誤

framingerr:OUTstd_logic; --接收幀數(shù)據(jù)錯(cuò)誤

overrun:OUTstd_logic; --接收溢出錯(cuò)誤data:INOUTstd_logic_vector(0TO7)); --雙向數(shù)據(jù)總線2.UART程序設(shè)計(jì)UART的程序設(shè)計(jì)分為5部分。第一部分是CLOCK時(shí)鐘設(shè)計(jì),第二部分是發(fā)送數(shù)據(jù)設(shè)計(jì),第三部分是接收數(shù)據(jù)設(shè)計(jì),第四部分是異步控制設(shè)計(jì),第五部分是發(fā)送與接收異步控制設(shè)計(jì)。結(jié)構(gòu)體采用“IF…THEN…ELSE(ELSIF)”順序語句設(shè)計(jì),結(jié)構(gòu)體命名為exemplar,項(xiàng)目名為UART。下面提供的是UART的VHDL設(shè)計(jì)參考程序,圖9.8是UART的參考程序生成的UART符號文件。圖9.8UART符號文件9.2.2UART程序仿真編譯UART程序,正確后開始進(jìn)行仿真。仿真前信號的設(shè)置如下:rx端口設(shè)置為時(shí)鐘周期信號,周期為20us、clkx16端口設(shè)置為時(shí)鐘周期信號,周期為40us、reset端口設(shè)置為邏輯1、read端口設(shè)置為邏輯0、data端口設(shè)置數(shù)據(jù)為01、02、03、04、05、06…。仿真通過后可以看到對應(yīng)輸出端口data數(shù)據(jù)發(fā)生的變化,UART的仿真波形如圖9.9所示。作者使用Altera公司的MAX7000SEPM7128SLC84-6完成項(xiàng)目設(shè)計(jì),打開UART.RPT報(bào)告文件,可以了解詳細(xì)的集成電路資源利用與分配情況。圖9.9UART的仿真波形

9.3人機(jī)接口電路的設(shè)計(jì)與實(shí)現(xiàn)

9.3.1接口電路的分析

9.3.2接口電路的設(shè)計(jì)

9.3人機(jī)接口電路的設(shè)計(jì)與實(shí)現(xiàn)

人機(jī)接口電路在微機(jī)系統(tǒng)中應(yīng)用非常廣泛,主要接口有數(shù)碼管顯示、鍵盤和VGA顯示器等。在CPLD系統(tǒng)設(shè)計(jì)中人機(jī)接口電路的設(shè)計(jì)與開發(fā)也是一個(gè)重要的環(huán)節(jié),例如,數(shù)碼管的靜態(tài)和動(dòng)態(tài)掃描顯示;矩陣方式的鍵盤掃描、按鍵去抖動(dòng)、鍵碼識別等。這里主要討論矩陣方式的鍵盤接口電路的設(shè)計(jì)與實(shí)現(xiàn)。9.3.1接口電路的分析矩陣方式的鍵盤接口電路的設(shè)計(jì)主要包含的矩陣掃描、去抖動(dòng)、鍵碼識別及顯示功能的設(shè)計(jì),下面以4×4鍵盤接口電路的設(shè)計(jì)為例。接口電路的系統(tǒng)時(shí)鐘inclk頻率為22MHz,接口電路的主要功能是分頻和掃描。利用系統(tǒng)時(shí)鐘22MHz的inclk分頻產(chǎn)生5ms的鍵查詢時(shí)鐘keyclkout,keyclkout十分頻后產(chǎn)生50ms的觸發(fā)時(shí)鐘chuclkout。在觸發(fā)時(shí)鐘chuclkout的高電平期間送出列掃描數(shù)據(jù),將得到的行數(shù)據(jù)送去抖動(dòng)電路,去抖動(dòng)后讀入,根據(jù)行、列數(shù)據(jù)之間的關(guān)系確定其鍵值。鍵盤布局如圖9.10所示,圖9.11是設(shè)計(jì)電路KEY2編譯通過后生產(chǎn)的符號文件。圖9.10KBC鍵盤電路示意圖圖9.11KEY2的符號文件9.3.2接口電路的設(shè)計(jì)1.去抖動(dòng)電路設(shè)計(jì)去抖動(dòng)電路的基本設(shè)計(jì)原理:電路采用5ms的時(shí)鐘接收輸入數(shù)據(jù)A,如果連續(xù)三次數(shù)據(jù)為零,可以確認(rèn)數(shù)據(jù)是穩(wěn)定的,且可以接收。如圖9.12所示是去抖動(dòng)電路的設(shè)計(jì),采用圖形設(shè)計(jì)輸入。圖9.12鍵盤去抖動(dòng)電路以上是通用的抖動(dòng)消除電路設(shè)計(jì),由D觸發(fā)器構(gòu)成。信號穩(wěn)定時(shí)間由D觸發(fā)器的個(gè)數(shù)決定。該單元電路命名為tinglmove,該電路作為元件將在下面的VHDL程序中調(diào)用。2.鍵盤掃描顯示電路的設(shè)計(jì)下面是鍵盤串行掃描顯示電路實(shí)體的VHDL描述,具體程序中采用元件例化語句調(diào)用鍵盤去抖動(dòng)電路tinglmove。LIBRARYieee;USEieee.std_logic_1164.all;USEieee.std_logic_arith.all;USEieee.std_logic_unsigned.all;-----------------------------------------ENTITYkey2ISPORT(inclk:INstd_logic;--時(shí)鐘信號

inkey:INstd_logic_vector(0to3);--按鍵信號

outkey:OUTstd_logic_vector(0to3); --鍵盤掃描輸出信號

outled:OUTstd_logic_vector(7downto0) --LED顯示輸出信號

);ENDkey2;---------------------------------------------圖9.13是key2.vhd文件的層次結(jié)構(gòu)。圖9.13key2.vhd文件的層次結(jié)構(gòu)圖9.14是key2的仿真波形,可以看到輸入clk端口的設(shè)置,inkey端口設(shè)置邏輯信號,仿真通過后可以看出對應(yīng)輸出口outkey數(shù)據(jù)發(fā)生的變化。圖9.14key2.scf文件的仿真波形

9.48255并行接口電路的設(shè)計(jì)與實(shí)現(xiàn)9.4.18255接口電路的分析9.4.28255接口電路的設(shè)計(jì)

9.48255并行接口電路的設(shè)計(jì)與實(shí)現(xiàn)

8255是典型的可編程并行接口芯片,廣泛用于各種外設(shè)接口電路中。用可編程邏輯器件,如FLEX和MAX系列設(shè)計(jì)可以實(shí)現(xiàn)8255的設(shè)計(jì),設(shè)計(jì)具有24個(gè)可編程I/O接口、靜態(tài)讀/寫模式、同步處理設(shè)計(jì)模式等功能的并行接口電路。9.4.18255接口電路的分析可編程并行接口芯片8255從結(jié)構(gòu)上看主要有四部分組成:控制寄存器和邏輯分配單元;數(shù)據(jù)輸出多路選通單元;AB端口輸入輸出單元以及C端口輸入輸出控制選擇單元。圖9.15是8255的結(jié)構(gòu)框圖。表9.2是8255的接口引腳功能類型及其說明。圖9.158255結(jié)構(gòu)框圖名稱類型屬性功能說明Clkinput/時(shí)鐘Ncsinput“0”片選Nrdinput“0”讀數(shù)據(jù)控制Nwrinput“0”寫數(shù)據(jù)控制Resetinput“1”復(fù)位A[1..0]input“1”積存器地址總線Din[7..0]input“1”數(shù)據(jù)輸入總線Pain[7..0]input“1”A口輸入總線Pbin[7..0]input“1”B口輸入總線Pcin[7..0]input“1”C口輸入總線Paenoutput“1”A口數(shù)據(jù)使能Pbenoutput“1”B口數(shù)據(jù)使能Dout[7..0]output“1”數(shù)據(jù)輸出總線Paout[7..0]output“1”A口輸出總線Pbout[7..0]output“1”B口輸出總線Pcent[7..0]output“1”C口數(shù)據(jù)使能總線Pcout[7..0]output“1”C口輸出總線表9.28255的引腳功能及類型說明8255三種工作方式的時(shí)序波形不同,圖9.16給出工作方式0的時(shí)序波形。讀者如果需要了解方式1和2的時(shí)序波形可以查閱相關(guān)資料。(a)方式0輸入時(shí)序波形(b)方式0輸出時(shí)序波形圖9.16工作方式0的時(shí)序波形

9.4.28255接口電路的設(shè)計(jì)

8255的VHDL程序中的前幾條語句說明調(diào)用的IEEE庫及其相關(guān)的程序包;接著是8255的端口描述,其中輸入輸出端口的定義與A8255定義相同;其他語句是8255的功能描述。這里采用元件例化的設(shè)計(jì)方法,主程序包含相對獨(dú)立的7個(gè)例化的子程序,這些子程序分別是dout_mux、cntl_log、partaout、partain、partbin、partbout和partcout。圖9.17給出主程序與子程序之間的層次關(guān)系。圖9.17主程序與子程序的層次關(guān)系圖9.18是CNTL-LOG.SCF文件仿真波形。由圖可以看出,輸入RESET端口設(shè)置邏輯0、PCIN端口設(shè)置邏輯0、nRD端口設(shè)置邏輯0、CLK端口設(shè)置時(shí)鐘40ns、nWR端口設(shè)置寫信號,可以看到輸出端口PortAoouLd數(shù)據(jù)發(fā)生的變化。圖9.18cntl_log仿真波形圖9.19是cntl_log生成的符號文件。圖9.19cntl_log的符號文件圖9.20是dout_mux的仿真波形。輸入U(xiǎn)TSelect端口設(shè)置邏輯0、ontrlReg端口設(shè)置邏輯00、rtAinReg端口設(shè)置邏輯00、PAIN端口設(shè)置邏輯01、02、03、04、05、06…,仿真后,可以看出輸出端口DOUT數(shù)據(jù)發(fā)生的變化。圖9.20dout_mux的仿真波形圖9.21是dout_mux.vhd文件編譯后生成的符號文件。圖9.21dout_mux的符號文件圖9.22是portain的仿真波形。輸入RESET端口設(shè)置邏輯0,復(fù)位時(shí)RESET設(shè)置為邏輯1;PortALnLd端口設(shè)置邏輯0、PAIN端口設(shè)置為00、01、02、03、04、05、06…、CLK端口設(shè)置邏輯時(shí)鐘40ns,仿真通過后可以看出對應(yīng)輸出口PortAInReg數(shù)據(jù)變化,同時(shí)可以觀測到輸入RESET端口設(shè)置邏輯1時(shí)間段內(nèi)的復(fù)位功能。圖9.22portain的仿真波形

圖9.23是portain.vhd文件編譯后產(chǎn)生的符號文件。圖9.23portain的符號文件

圖9.24是portaout的仿真波形。輸入RESET端口設(shè)置為邏輯0,復(fù)位有效時(shí)設(shè)置RESET為邏輯1;PortAOutLd端口設(shè)置邏輯0、DIN端口設(shè)置數(shù)據(jù)00、01、02、03、04、05、06…;CLK端口設(shè)置時(shí)鐘周期40ns。仿真通過后,可以看到輸出端口PAOUT數(shù)據(jù)發(fā)生的變化,同時(shí)可以觀測到輸入RESET端口設(shè)置邏輯1時(shí)間段內(nèi),信號被復(fù)位。圖9.24portaout的仿真波形圖9.25是portout.vhd文件編譯生成的符號文件。圖9.25portout符號文件圖9.26是portbin的仿真波形。輸入RESET端口設(shè)置邏輯0,復(fù)位有效時(shí)RESET為邏輯1;PortBLnLd端口設(shè)置邏輯0、PBIN端口輸入00、01、02、03、04、05、06…;CLK端口設(shè)置時(shí)鐘周期40ns。仿真通過后,可以看到輸出端口PortBInReg數(shù)據(jù)的變化,同時(shí)可以看到輸入RESET端口為邏輯1時(shí),信號復(fù)位功能。圖9.26portbin仿真波形圖9.27是portbin.vhd文件編譯后生成的符號文件。圖9.27portbin符號文件圖9.28portbout.vhd文件的仿真波形。輸入RESET端口設(shè)置邏輯0,復(fù)位有效時(shí)設(shè)為邏輯1、PortALnLd端口設(shè)置邏輯0、PAIN端口設(shè)置數(shù)據(jù)00、01、02、03、04、05、06…、CLK端口設(shè)置時(shí)鐘周期40ns。仿真通過后,可以看出輸出端口PBOUT數(shù)據(jù)的變化,同時(shí)可以觀測到輸入RESET為邏輯1時(shí)的信號復(fù)位功能。圖9.28portbout.vhd文件的仿真波形圖9.29是portbout.vhd文件編譯后生成的符號文件。圖9.29portbout.vhd的符號文件圖9.30是輸出端口C子程序portcout.vhd文件編譯后生成的portcout

符號文件。圖9.30portcout.vhd的符號文件圖9.31是portcout.vhd文件的仿真波形。輸入RESET端口設(shè)置邏輯0、DIN端口設(shè)置數(shù)據(jù)為00、01、02、03、04、05、06…、PCIN端口設(shè)置數(shù)據(jù)為00、01、02、03、04、05、06…、CLK端口設(shè)置時(shí)鐘周期40ns。仿真通過后,看到輸出端口COUT和Status數(shù)據(jù)按照DIN端口和PCIN端口的數(shù)據(jù)發(fā)生對應(yīng)的變化。當(dāng)RESET端口設(shè)置邏輯1時(shí),信號復(fù)位。圖9.31

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論