MAX233ECWP 控制單元判斷是否開鎖
發布時間:2019/10/25 21:32:23 訪問次數:2025
MAX233ECWP較器輸出M為1,由控制單元判斷是否開鎖。第二個always語句說明選擇器的工作。當選擇器的輸出與所輸入的密碼相同時B為1,否則為0。
例10.4.3
∥數字密碼鎖的RTL描述
【nodule Lock~RTL(0PEN,ERROR,nRESET,TRY,READ,BIT,CLK);
/*=====定義輸人/輸出端口,參見圖10.2.14=====*/
input nRESET,TRY,READ,BIT,CLK;
output OPEN,ERROR;
reg OPEN,ERROR;
wire nREsET,TRY,READ,BIT,CLK;
∥對狀態進行編碼
paran△eter SO =6’ b000001,s1 =61 b000010,s2 =.61 b000100,S3 =
6i b001000,S4=6i b010000,S5=6’b100000;
paran△eter P.ass・word=8’bO1011001;
∥定義系統內部的信號變量及其類型,見圖10.2.14
reg [5:0]Currentstate,Nextstate; ∥控制寄存器
reg nCLR,CNT; ∥CNT=1,計數器工作;CNT=0,暫停計數
wire B,M; ∥數據處理器輸出
reg [2:0]Q; ∥計數器輸出
wire A2,A1,A0; ∥數據選擇器控制信號
Wire [7:0]D; ∥數據選擇器輸入信號
reg Mux~out; ∥數據選擇器輸出信號
/*=====控制單元狀態轉換的描述,參見圖10.2.16=====*/
always@(posedge CLK or negedge nRESET)
begin~:statereg
if(~nRESET)
begin Currentstate <=SO; nCLR (=1i bO;end
else
begin Currentstate (=Nextstate;nCLFt <=1i b1;end
end∥statereg
anways@(BIT or READ or TRY or B or M or Currentstate)
begin:fsm
oPEN=11 bO;
ERROR=1t bO;
CNT=1i bO;
在Quartus Ⅱ 5.0軟件中建立一個新的工程項目,輸人上述HDL文件,對設計項目進行編譯。然后建立一個仿真波形文件,給出輸入、輸出信號的激勵波形,對設計項目進行時序仿真,得到如圖10.4.3所示的波形。
若系統內設置的密碼為01011001。分析波形圖可知,nREsET信號使系統首先進入初始狀態。BIT開關用于產生1位數碼,READ開關將BIT產生的當前數碼讀入系統,并與系統內所設置密碼的相應位進行比較,比較的順序是從低位到高位。當讀人8位數碼與開鎖密碼一致時,按下開鎖的TRY信號,系統將產生高電平開鎖信號0PEN,如圖10.4.3(a)所示。如果開鎖過程中任何一次送人的數碼與設置的密碼數值不一致,例如圖10,4,3(b)中輸入的第2位數碼為1,與設置的0不符,系統發出錯誤信息ERROR。或者TRY信號使用不當,也會產生ERROR信號。
為便于分析開鎖過程中,系統狀態之間的轉換,圖10.4.3中給出了中間變量的波形圖,具體含義這里不再贅述,讀者可自行分析。
MAX233ECWP較器輸出M為1,由控制單元判斷是否開鎖。第二個always語句說明選擇器的工作。當選擇器的輸出與所輸入的密碼相同時B為1,否則為0。
例10.4.3
∥數字密碼鎖的RTL描述
【nodule Lock~RTL(0PEN,ERROR,nRESET,TRY,READ,BIT,CLK);
/*=====定義輸人/輸出端口,參見圖10.2.14=====*/
input nRESET,TRY,READ,BIT,CLK;
output OPEN,ERROR;
reg OPEN,ERROR;
wire nREsET,TRY,READ,BIT,CLK;
∥對狀態進行編碼
paran△eter SO =6’ b000001,s1 =61 b000010,s2 =.61 b000100,S3 =
6i b001000,S4=6i b010000,S5=6’b100000;
paran△eter P.ass・word=8’bO1011001;
∥定義系統內部的信號變量及其類型,見圖10.2.14
reg [5:0]Currentstate,Nextstate; ∥控制寄存器
reg nCLR,CNT; ∥CNT=1,計數器工作;CNT=0,暫停計數
wire B,M; ∥數據處理器輸出
reg [2:0]Q; ∥計數器輸出
wire A2,A1,A0; ∥數據選擇器控制信號
Wire [7:0]D; ∥數據選擇器輸入信號
reg Mux~out; ∥數據選擇器輸出信號
/*=====控制單元狀態轉換的描述,參見圖10.2.16=====*/
always@(posedge CLK or negedge nRESET)
begin~:statereg
if(~nRESET)
begin Currentstate <=SO; nCLR (=1i bO;end
else
begin Currentstate (=Nextstate;nCLFt <=1i b1;end
end∥statereg
anways@(BIT or READ or TRY or B or M or Currentstate)
begin:fsm
oPEN=11 bO;
ERROR=1t bO;
CNT=1i bO;
在Quartus Ⅱ 5.0軟件中建立一個新的工程項目,輸人上述HDL文件,對設計項目進行編譯。然后建立一個仿真波形文件,給出輸入、輸出信號的激勵波形,對設計項目進行時序仿真,得到如圖10.4.3所示的波形。
若系統內設置的密碼為01011001。分析波形圖可知,nREsET信號使系統首先進入初始狀態。BIT開關用于產生1位數碼,READ開關將BIT產生的當前數碼讀入系統,并與系統內所設置密碼的相應位進行比較,比較的順序是從低位到高位。當讀人8位數碼與開鎖密碼一致時,按下開鎖的TRY信號,系統將產生高電平開鎖信號0PEN,如圖10.4.3(a)所示。如果開鎖過程中任何一次送人的數碼與設置的密碼數值不一致,例如圖10,4,3(b)中輸入的第2位數碼為1,與設置的0不符,系統發出錯誤信息ERROR。或者TRY信號使用不當,也會產生ERROR信號。
為便于分析開鎖過程中,系統狀態之間的轉換,圖10.4.3中給出了中間變量的波形圖,具體含義這里不再贅述,讀者可自行分析。