總線(xiàn)控制邏輯的VHDL設計仿真與測試
計算機系統是由許多具有獨立功能的模塊互相連接而成的。隨著(zhù)計算機的不斷發(fā)展和廣泛應用,各生產(chǎn)廠(chǎng)商除了向用戶(hù)提供整套系統外,還設計和提供各種功能的插件模塊,讓用戶(hù)根據自己的需要構成自己的應用系統或擴充原有的系統。這些模塊間需要互相通信,需要有高速、可靠的信息交換通道,這就是總線(xiàn)??偩€(xiàn)使得計算機各模塊之間的信號線(xiàn)可以直接互相連接,提高了信號傳輸的速度。
本文引用地址:http://dyxdggzs.com/article/201612/333390.htmVHDL(Very-High-Speed Integrated Circuit Hardware Description Language)是一種硬件描述語(yǔ)言,在電子設計領(lǐng)域得到廣泛應用,最新版本為IEEE標準的1076-1993版,由IEEE在1993年公布。VHDL主要用于描述數字系統的結構、行為、功能和接口。本文用VHDL的有限狀態(tài)機來(lái)描述和仿真計算機總線(xiàn)控制器的邏輯行為。
1 總線(xiàn)在總線(xiàn)控制器的控制下工作
在計算機系統各模塊之間的信息通信過(guò)程中,每一時(shí)刻只能有一組信息在總線(xiàn)上傳輸。如果有多組信息要傳輸,只能在總線(xiàn)控制器的控制下,按順序分別傳輸,這樣對每一組信息的傳輸就形成一個(gè)傳輸周期,這個(gè)周期包括申請分配階段、尋址階段、數據交換階段和撤消階段。申請分配階段由主模塊提出總線(xiàn)使用申請,經(jīng)總線(xiàn)控制器批準后獲得總線(xiàn)使用權;之后主模塊把從模塊地址放置到地址總線(xiàn)上,即尋址階段;從模塊接收到地址后做好相應的通信準備工作,并與主模塊建立通信,進(jìn)行數據交換;數據交換結束后,主模塊通知總線(xiàn)控制器,并交還總線(xiàn)使用權,即撤消階段。常用的總線(xiàn)通信方式有同步通信方式和異步通信方式兩種。
2 同步通信方式的有限狀態(tài)機描述和仿真
在同步通信方式里,模塊之間的通信傳輸周期是固定的。有精確穩定的系統時(shí)鐘作為傳輸周期的“標尺”,通信雙方嚴格按照時(shí)鐘標尺進(jìn)行各種操作,以主模塊(如CPU)從從模塊(如內存)讀取數據為例,總線(xiàn)控制器框圖如圖1所示。
這種方式下總線(xiàn)的控制狀態(tài)轉移圖如圖2所示。
用VHDL進(jìn)行描述并在MAX+PLUSII上進(jìn)行仿真,結果如圖3所示:
從圖3可以看出,控制器一開(kāi)始處于狀態(tài)0(空閑狀態(tài)),此時(shí)總線(xiàn)批準控制信號grant、片選信號csbar、地址有效信號effect和讀控制信號rbar均處于無(wú)效的高電平;一旦有主模塊發(fā)出總線(xiàn)請求,即request信號為低電平,控制器轉移到狀態(tài)1,總線(xiàn)批準控制信號有效,申請得到批準,這里假設主模塊只有一個(gè),即不存在多個(gè)主模塊競爭使用總線(xiàn)的情況;進(jìn)入狀態(tài)2后,主模塊發(fā)出地址,這里假設地址為“AD”,同時(shí)置片選信號csbar和地址有效信號effect為有效狀態(tài),從模塊接收到地址有效信號和片選信號后,根據主模塊發(fā)出的地址進(jìn)行數據準備工作;進(jìn)入狀態(tài)3后,主模塊發(fā)出讀控制信號,即置rbar信號為有效狀態(tài);進(jìn)入狀態(tài)4后,假設從模塊數據準備就緒,并發(fā)送到數據總線(xiàn)上,這里假設數據為“DA”,主模塊讀取數據;進(jìn)入狀態(tài)5后,主模塊讀數據完畢,發(fā)出撤消信號,即置withdraw信號為有效狀態(tài),之后返回狀態(tài)0,所有控制信號都返回到無(wú)效狀態(tài);至此,一個(gè)數據傳輸周期結束。在傳輸過(guò)程中,各個(gè)模塊的動(dòng)作嚴格按照系統時(shí)鐘同步進(jìn)行。
本設計下載到GW48—GK2/PK2 EDA實(shí)驗開(kāi)發(fā)系統,該系統目標芯片為EP1K100QC208-3,按照結構圖No.0進(jìn)行硬件測試,實(shí)驗系統提供測試引腳的限制,只測試地址和數據均為4位(測試低4位)的情況,結果如圖4所示。
從圖4中可以看出,在狀態(tài)0,首先設置withdraw、request和rst為“1”,依次對應圖中下方3個(gè)發(fā)光二極管,此時(shí)4個(gè)輸出控制信號rbar、effect、csbar和grant為“1”,這4個(gè)信號按次序組成一個(gè)4位二進(jìn)制數據,該數據經(jīng)過(guò)譯碼器譯碼后由數碼管顯示輸出結果,因4個(gè)信號均為“1”,故應該顯示結果“F”,如圖中上面的數碼管顯示“F”(右邊第3個(gè)數碼管)。第2步,按照圖3所示時(shí)序設置rst和request信號并由按鍵3輸入一個(gè)時(shí)鐘脈沖,進(jìn)入狀態(tài)1,此時(shí)grant信號為“0”,4個(gè)輸出控制信號組合為“1110”,可以看到圖中數碼管顯示“E”,表明主模塊申請總線(xiàn)被批準。第3步,設置地址信號addr1(低4位)為“1010”,即“A”,如圖中數碼管下方兩個(gè)發(fā)光二極管所示,并輸入一個(gè)時(shí)鐘脈沖,進(jìn)入狀態(tài)2,該地址信號由addr2經(jīng)譯碼器譯碼后由數碼管顯示出來(lái),如圖中上面最右邊的數碼管顯示“A”,在該狀態(tài)中地址有效信號effect和片選信號csbar均為“0”,此狀態(tài)下主模塊發(fā)出地址有效信號和片選信號,4個(gè)輸出控制信號組合為“1000”,從圖中可以看到數碼管顯示數字“8”。第4步,輸入一個(gè)時(shí)鐘脈沖進(jìn)入狀態(tài)3,該狀態(tài)下主模塊發(fā)出讀控制信號,即置rbar信號為“0”,4個(gè)輸出控制信號全部為“0”,如圖中數碼管顯示“0”。第5步,設置數據信號get_data(低4位)為“1101”,即“D”,如圖中數碼管下方兩個(gè)發(fā)光二極管所示,并輸入一個(gè)時(shí)鐘脈沖,進(jìn)入狀態(tài)4,該數據信號由data經(jīng)譯碼器譯碼后由數碼管顯示出來(lái),如圖中上面右邊第2個(gè)數碼管顯示“d”。第6步,輸入一個(gè)時(shí)鐘脈沖,進(jìn)入狀態(tài)5,主模塊讀取數據完畢,并發(fā)出撤消信號,1個(gè)數據傳輸周期結束;之后如果再輸入一個(gè)時(shí)鐘脈沖則回到狀態(tài)0。
評論