Source File - BJACK
module
BJACK
title
'BlackJack state machine controller'
"
The design is used as a submodule in BJTOPX,
"
oe pin is not supported and Ena is not needed
"Inputs
Clk,ClkIN pin;
"System clock
GT16,LT22 pin;
"Score less than 17 and 22
is_Ace pin;
"Card is ace
Restart pin;
"Restart game
CardIn,CardOut pin; "Card present switches
"
Ena
pin;
Sensor = [CardIn,CardOut];
_In
= [ 0 , 1 ];
InOut = [
1 , 1 ];
Out
= [ 1 , 0 ];
"Outputs
AddClk pin;
"Adder clock
Add10 pin;
"Input Mux control
Sub10 pin;
"Input Mux control
Q2,Q1,Q0 pin;
Ace
pin; "Ace Memory
High,Low = 1,0;
H,L,C,X = 1,0,.C.,.X.;
"test vector charactors
AddClk
istype 'com';
Ace
istype 'reg_d';
Add10,Sub10,Q2,Q1,Q0 istype 'reg_d';
Qstate = [Add10,Sub10,Q2,Q1,Q0];
Clear =
[ 1 , 1 , 1, 1, 1];
ShowHit = [
1 , 1 , 1, 1, 0];
AddCard = [
1 , 1 , 0, 0, 0];
Add_10 = [
0 , 1 , 0, 0, 0];
Wait
= [ 1 , 1 , 0, 0, 1];
Test_17 = [
1 , 1 , 0, 1, 0];
Test_22 = [
1 , 1 , 0, 1, 1];
ShowStand = [ 1 ,
1 , 1, 0, 0];
ShowBust = [ 1
, 1 , 1, 0, 1];
Sub_10 = [
1 , 0 , 0, 0, 1];
Zero
= [ 0 , 0 , 0, 0, 0];
equations
[Qstate,Ace].clk = Clk;
"
[Qstate,Ace].oe = !Ena;
@page
@dcset
state_diagram
Qstate
State Clear: AddClk = !ClkIN;
Ace := Low;
if (Restart==Low) then Clear else ShowHit;
State ShowHit: AddClk = Low;
Ace := Ace.fb;
if (CardIn==Low) then AddCard else ShowHit;
State AddCard: AddClk = !ClkIN;
Ace := Ace.fb;
if (is_Ace & !Ace.fb) then Add_10 else Wait;
State Add_10: AddClk = !ClkIN;
Ace := High;
goto Wait;
State Wait: AddClk = Low;
Ace := Ace.fb;
if (CardOut==Low) then Test_17 else Wait;
State Test_17: AddClk = Low;
Ace := Ace.fb;
if !GT16 then ShowHit else Test_22;
State Test_22: AddClk = Low;
Ace := Ace.fb;
case LT22
: ShowStand;
!LT22 & !Ace.fb : ShowBust;
!LT22 & Ace.fb : Sub_10;
endcase;
State Sub_10: AddClk = !ClkIN;
Ace := Low;
goto Test_17;
State ShowBust: AddClk = Low;
Ace := Ace.fb;
if (Restart==Low) then Clear else ShowBust;
State ShowStand: AddClk = Low;
Ace := Ace.fb;
if (Restart==Low) then Clear else ShowStand;
State Zero: goto Clear;
"@page
"test_vectors
edited ...
end