一、實驗目的
(1)進一步熟悉Quartus II軟件和GW48-PK2S實驗系統的使用方法;
(2)用狀態機實現序列檢測器的設計,了解一般狀態機的設計與應用
二、實驗內容
1. 基本命題
利用Quartus II實現一個8位的序列檢測器設計;給出仿真波形。最后進行引腳鎖定并進行測試,硬件驗證設計電路對給定序列的檢測功能。
2. 擴展命題
在上述設計基礎上,通過修改設計,實現以最簡便的預置方法,獲得n位序列檢測器的功能。
三、實驗儀器與器材
計算機1臺,GW48-PK2S實驗箱1臺,QuartusⅡ6.0 1套。
四、實驗
1. 基本命題
① 總體設計
設計兩個進程。
進程Com1:實現序列的檢測
進程Com2:實現檢測結果的輸出
② 程序設計
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITY SCHK IS
PORT(DIN, CLK, CLR :INSTD_LOGIC;--串行輸入數據位/工作時鐘/復位信號
AB :OUTSTD_LOGIC_VECTOR(3DOWNTO0));--檢測結果輸出
END SCHK;
ARCHITECTURE behav OF SCHK IS
SIGNAL Q :INTEGERRANGE0TO8;
SIGNAL D :STD_LOGIC_VECTOR(7DOWNTO0); --8位待檢測預置數
BEGIN
D <="11100101" ;--8位待檢測預置數:密碼:E5H
Com1:PROCESS( CLK, CLR )
BEGIN
IF CLR = '1' THEN Q <=0;
ELSIF CLK'EVENTAND CLK='1' THEN--時鐘到來時,判斷并處理當前輸入的位
CASE Q IS
WHEN0=> IF DIN = D(7)THEN Q <=1;ELSE Q <=0;ENDIF;
WHEN1=> IF DIN = D(6)THEN Q <=2;ELSE Q <=0;ENDIF;
WHEN2=> IF DIN = D(5)THEN Q <=3;ELSE Q <=0;ENDIF;
WHEN3=> IF DIN = D(4)THEN Q <=4;ELSE Q <=0;ENDIF;
WHEN4=> IF DIN = D(3)THEN Q <=5;ELSE Q <=0;ENDIF;
WHEN5=> IF DIN = D(2)THEN Q <=6;ELSE Q <=0;ENDIF;
WHEN6=> IF DIN = D(1)THEN Q <=7;ELSE Q <=0;ENDIF;
WHEN7=> IF DIN = D(0)THEN Q <=8;ELSE Q <=0;ENDIF;
WHENOTHERS=> Q <=0;
ENDCASE;
ENDIF;
ENDPROCESS;
Com2:PROCESS( Q ) --檢測結果判斷輸出
BEGIN
IF Q =8 THEN AB <="0001"; --序列數檢測正確,輸出 "1"
ELSE AB <="0011"; --序列數檢測錯誤,輸出 "3"
ENDIF;
ENDPROCESS;
END behav ;
③ 仿真分析
圖6-1 仿真波形圖
仿真預測:當輸入的結果是預置序列的時候,輸出0001;反之,輸出0011。
④ 硬件測試
表1-1 SCHK在GWAC6板上目標芯片EP1C6Q240C8的引腳鎖定信息
端口名稱 |
端口符號 |
GWAC6板輸入輸出元件 |
GWAC6板接口 |
目標器件引腳 |
備注 |
輸入引腳D |
DIN |
按鍵1 |
PIO1 |
233 |
模式No.5
|
清零端 |
CLR |
按鍵2 |
PIO2 |
234 |
|
主頻率 |
CLK |
按鍵3 |
PIO3 |
235 |
|
4位數字量輸出引腳 |
AB |
數碼管7 |
PIO40~47 |
161-164 |
圖6-2引腳的配置
2. 擴展命題
① 總體設計
本命題通過改寫case判斷語句,將要檢測的序列和序列的位數關聯,通過IF語句對狀態進行判斷。
② 程序設計
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITY SCHK IS
PORT(DIN, CLK, CLR ,BIT_COUNT :INSTD_LOGIC;--串行輸入數據位/工作時鐘/復位信號/要檢測的位數標識碼
AB :OUTSTD_LOGIC_VECTOR(3DOWNTO0));--檢測結果輸出
END SCHK;
ARCHITECTURE behav OF SCHK IS
SIGNAL Q :INTEGERRANGE0TO8;
SIGNAL D :STD_LOGIC_VECTOR(7DOWNTO0); --8位待檢測預置數
SIGNAL Count:INTEGERRANGE0TO8; --要檢測的位數(最多支持8位)
BEGIN
D <="11100000" ;--8位待檢測預置數:--11100000
Com1:PROCESS( CLK, CLR )
BEGIN
IF BIT_COUNT='0' THEN Count<=3;--判斷要檢測多少位
ELSE Count<=4;ENDIF;
IF CLR = '1' THEN Q <=0;
ELSIF CLK'EVENTAND CLK='1' THEN--時鐘到來時,判斷并處理當前輸入的位
if Q=(Count+1)THEN Q<=0;ENDIF;--開始新的一輪的檢測
if(DIN = D(7-Q))THEN Q<=Q+1;ELSE Q<=0;ENDIF;--進行狀態的檢測
ENDIF;
ENDPROCESS;
Com2:PROCESS( Q ) --檢測結果判斷輸出
BEGIN
IF Q =(Count+1) THEN AB <="0001"; --序列數檢測正確,輸出 "1"
ELSE AB <="0011"; --序列數檢測錯誤,輸出 "3"
ENDIF;
ENDPROCESS;
END behav ;
③ 仿真分析
當BIT_COUNT為低電平的時候,實現4位序列檢測器的功能;當BIT_COUNT為高電平的時候,實現5位序列檢測器的功能。設待檢測的序列為“11100000”。
圖6-3 5位序列檢測器波形圖
④ 硬件測試
表1-2 SCHK在GWAC6板上目標芯片EP1C6Q240C8的引腳鎖定信息
端口名稱 |
端口符號 |
GWAC6板輸入輸出元件 |
GWAC6板接口 |
目標器件引腳 |
備注 |
輸入引腳D |
DIN |
按鍵1 |
PIO1 |
233 |
模式No.5
|
清零端 |
CLR |
按鍵2 |
PIO2 |
234 |
|
主頻率 |
CLK |
按鍵3 |
PIO3 |
235 |
|
檢測位數標識 |
BIT_COUNT |
按鍵4 |
PIO4 |
236 |
|
4位數字量輸出引腳 |
AB |
數碼管7 |
PIO40~47 |
161-164 |
圖6-4 引腳的配置
五、實驗思考題
如果帶檢測預置數必須以右移方式進入序列檢測器,那么該程序該做如何修改?
① 總體設計
同序列檢測中數據右移輸入的思路,但是我們這次不進行檢測,收到什么就將其存入程序中的預置數變量中。我們需要額外設置一個輸入變量,變量ISE用來標示是否進行預置數序列的輸入,當ISE=1,輸入口DIN用來輸入預置數序列的;當ISE=0,輸入口DIN用來輸入要檢測的序列。其中預置數序列的長度與BIT_COUNT相關。
② 程序設計
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITY SCHK IS
PORT(DIN, CLK, CLR ,BIT_COUNT,ISE :INSTD_LOGIC;--串行輸入數據位/工作時鐘/復位信號/要檢測的位數標識碼/預置數序列的輸入使能
AB :OUTSTD_LOGIC_VECTOR(3DOWNTO0));--檢測結果輸出
END SCHK;
ARCHITECTURE behav OF SCHK IS
SIGNAL Q :INTEGERRANGE0TO8;
SIGNAL D :STD_LOGIC_VECTOR(7DOWNTO0); --8位待檢測預置數
SIGNAL Count:INTEGERRANGE0TO8; --要檢測的位數(最多支持8位)
BEGIN
Com1:PROCESS( CLK, CLR )
BEGIN
IF BIT_COUNT='0' THEN Count<=3;--判斷要檢測多少位
ELSE Count<=4;ENDIF;
IF CLR = '1' THEN Q <=0;
ELSIF CLK'EVENTAND CLK='1' THEN--時鐘到來時,判斷并處理當前輸入的位
if Q=(Count+1)THEN Q<=0;ENDIF;--開始新的一輪的檢測
--ISE=1的時候,開始預置數序列的輸入
if ISE='1' then D(7-Q)<=DIN;Q<=Q+1;
else
if(DIN = D(7-Q))THEN Q<=Q+1;ELSE Q<=0;ENDIF;--進行狀態的檢測
endif;
ENDIF;
ENDPROCESS;
Com2:PROCESS( Q ) --檢測結果判斷輸出
BEGIN
IF Q =(Count+1)AND ISE='0' THEN AB <="0001"; --當序列數檢測正確并且預置數使能為低電平的時候,輸出 "1"
ELSE AB <="0011"; --序列數檢測錯誤,輸出 "3"
ENDIF;
ENDPROCESS;
END behav ;
③ 仿真分析
圖6-5 帶有預置數功能的4位序列檢測器波形圖
④ 硬件測試
表1-3 SCHK在GWAC6板上目標芯片EP1C6Q240C8的引腳鎖定信息
端口名稱 |
端口符號 |
GWAC6板輸入輸出元件 |
GWAC6板接口 |
目標器件引腳 |
備注 |
輸入引腳D |
DIN |
按鍵1 |
PIO1 |
233 |
模式No.5
|
清零端 |
CLR |
按鍵2 |
PIO2 |
234 |
|
主頻率 |
CLK |
按鍵3 |
PIO3 |
235 |
|
檢測位數標識 |
BIT_COUNT |
按鍵4 |
PIO4 |
236 |
|
預置數使能 |
ISE |
按鍵5 |
PIO5 |
237 |
|
4位數字量輸出引腳 |
AB |
數碼管7 |
PIO40~47 |
161-164 |
圖6-6 引腳的配置
文章列表