|
! Q4 X/ V$ J% @7 ^+ i
*-------------------------------------alphabet-------------------------------------*! b, b% g3 U- J5 r% S" s9 D: N
# E& a% k2 o* U, I
`timescale 1ns / 1ps; f3 Z* z8 p* o- T6 c$ a9 u) M, U
) f' k. [5 \' ^' p2 B5 a' S
module alphabet(& [* h0 }' j& A
input RESET,
: r( H5 L" _2 I& M& l* q F input Clk," z+ ?8 R1 s3 Q8 _- c+ r% P6 l7 Z9 Q
input LONG,
$ e" _3 M. b* r# y( P; Q3 ], w: _" y1 P input SHORT,2 D9 J4 }6 A8 ?* V! Z3 i
input END_CHAR,
- U; @9 ^0 A# z8 [& F0 i output [7:0] LETTER,
6 `( m! a7 `* ?0 ?! l& N/ u output STROBE
6 v) a8 X% Q- h$ o$ q7 }! a );
7 _, _5 V T$ I' Y9 R: p) h$ V" Z- _ b8 e, s6 Q' @! X6 s4 `
reg[4:0] STATE, LETTER_REG;
3 y( z+ f' L/ p8 M3 g5 freg STROBE_REG;
! ?$ O' v9 R% |. _7 z/ r/ `: ]$ G- g0 B4 [
assign LETTER = LETTER_REG;' l; L' r3 P z# b, H. H
assign STROBE = STROBE_REG;
2 {4 K- X( P8 }1 Z3 f) W; q: B. j" N" k8 |# V2 \
4 i+ @0 P( k: Z m7 v
h* j) U/ k5 T% S8 ]; o- \( {localparam
7 \% W7 e' T" ^# X, l/ w; e# a INIT = 'h0,
* Y8 A1 g3 q8 t$ W5 W A = 'h1,: K _+ p3 K" ?, L5 D
B = 'h2,
8 n5 E. `0 C! s( C3 k+ z2 d C = 'h3,
5 s* z" w. C4 E0 y$ b( Z D = 'h4,* Y( a |% E+ n/ @1 A
E = 'h5,
/ e# M4 T6 {! g9 a$ L! J; L F = 'h6,
- D. g9 A' C" w G = 'h7,9 Y4 J$ n) X" V( }9 e! v
H = 'h8,
; y' o" H6 c! f4 m I = 'h9,9 n) r; j2 |; [6 a D1 ]
J = 'hA,6 x* d+ u: Z9 a8 U
K = 'hB,8 |! S$ l& e, m$ ^
L = 'hC,/ B6 G7 a( F/ r3 ]- j
M = 'hD,
1 M' e/ ]( D+ ?; B$ T7 D$ E N = 'hE,
' {" ]. c7 R% _: i" x7 O7 @ O = 'hF,% Y( O W2 \- z( Z8 ]1 B
P = 'h10,+ ?7 s2 n* U* a
Q = 'h11,
W. E; |# |1 }6 [$ k R = 'h12,
7 U1 E j1 l3 M9 _; w S = 'h13,
* g5 q+ W/ s" v* o0 K T = 'h14,
" b. Z; E2 v2 u5 H& R) B" o U = 'h15,4 s1 x/ J; R" [! ] g
V = 'h16,
9 }' {/ G0 N4 `1 L W = 'h17,
3 ?. H6 [- ?& T' I; {. m" x X = 'h18,
: u1 s& c- |# l+ C; t. ~ Y = 'h19,' F$ S% O* J5 z' `2 I
Z = 'h1A,0 J; q6 z9 p7 {" [" R, f
DONE = 'h1B;# `0 i8 D. r6 H K
% x& k2 D8 y' U$ x6 D& s
/ ?2 v) n$ I- C) i1 Balways @ (posedge Clk)9 z- G! y; |$ P7 V
begin
5 n4 ?1 J' u6 m# E if(RESET)
( d8 t# n0 G2 J; h* E begin: v" \4 r' ~/ R* `
STATE <= INIT;
5 [) `5 @. O( W5 M STROBE_REG <= 1'b0;
" j; ?+ j! T. l8 G- } LETTER_REG <= 5'b00000;
. H4 u$ U9 ?8 g end
. K+ F$ y& M" R7 G% d else2 R- T# b P) r* j' @' v: ?, d
begin
2 S$ S2 k" ^' c) n+ n case(STATE)0 E* R$ ^+ ]/ y* k& g ~ u, o
INIT:
( r# v* ?1 z! a+ W begin
- p8 g/ M) h; A. q3 b STROBE_REG <= 0;) T; h+ Z- I6 ~% G
if(SHORT) STATE<=E;% N3 ]4 ]4 I T$ Q
if (LONG) STATE <=T;2 \5 I; P9 N+ @& G4 [, H
end8 \# D- h1 B4 Q. N7 C6 V
A:; _6 {; r% L' v, g, n
begin
A6 D t m) E( n7 U& D6 N if(SHORT) STATE<=R;4 }3 E7 A ^/ T9 c7 T& I4 ^4 n% [
if (LONG) STATE <=W;: A9 T6 m! o4 F" B4 [" I
if(END_CHAR) STATE<=DONE;
% j+ o1 c. g& P7 k8 y4 W5 Q" X' D LETTER_REG <= STATE;
$ n4 M5 T( y* K6 f0 J! C7 w' Y end
9 }0 `* d7 a {4 a' t1 T! K B:
6 @) C" [. P/ [/ K. T; i begin$ S( W" U7 f) W9 r# i9 b
if(END_CHAR) STATE<=DONE;% ^2 b5 y: X' C2 B! [2 b" k
LETTER_REG <= STATE;5 O; |; b4 w* S, W8 v! S( U( _
end
% m4 b6 A1 }% J$ G C:
: r- j9 f9 \0 [/ l3 E2 y" r begin
( Y' @$ _9 M: t: T S% p z if(END_CHAR) STATE<=DONE;
0 J+ ~8 s: S* T. R7 ^( Q* o LETTER_REG <= STATE;% d0 _: l$ @* G# E8 o
end
* @3 P7 n! f+ B D:
& b+ Q4 G: D6 N6 K g begin
, ]* q. b; c3 X if(SHORT) STATE<=B;
+ L/ S2 d" n- X9 z* N) q" | if (LONG) STATE <=X;7 B, T( A4 }! J4 Q
if(END_CHAR) STATE<=DONE;
. ?( g+ y* {* Y/ _! M& Z LETTER_REG <= STATE;+ T2 Y x3 Q/ f- w! A# u- f
end
8 n0 V' p Z& T0 w3 s6 O E:3 A) T; K4 n6 _
begin
" `& K% C9 m9 }' p if(SHORT) STATE<=I;
+ ^7 f3 x# @; @+ Z$ W/ T; P if (LONG) STATE <=A;
; `! C2 T. v3 @8 | if(END_CHAR) STATE<=DONE;. f+ u: P. @8 b5 U b
LETTER_REG <= STATE;7 Y) \# X" D6 l3 P& c4 \$ v
end$ t7 F, Q2 N3 z
F: @( y1 x6 S- F7 h5 h R
begin' l9 ^6 e. G5 P' h
if(END_CHAR) STATE<=DONE;7 _5 ?; O2 E' ~- ^& d
LETTER_REG <= STATE;
# Z0 V+ f$ {9 x8 ?- X, u! n end: s. t9 q' ], t" P2 ^
G:8 b# o! ?. H& H
begin
9 Y0 [6 V, i; o4 y. ?- K if(SHORT) STATE<=Z;: W, s6 F5 ?) B- |* K6 Y$ q
if (LONG) STATE <=Q;6 ~* r! a2 p5 T3 x/ Z
if(END_CHAR) STATE<=DONE;( h/ @& Y( h/ f# V9 M: p
LETTER_REG <= STATE;
9 r Y! |. n8 t2 s end
( y& E* B) S6 E8 e! ] H:
% [. Y& V: W% B* P: C, m, w begin# i$ ]3 o& w( K" P3 ]0 c* w- n) a
if(END_CHAR) STATE<=DONE;
' C; {2 A0 a( A LETTER_REG <= STATE;4 I. [$ f7 D0 O: }7 a' D7 A! U
end0 |. N- p g4 j3 | J% m4 j' b
I:. [+ B: o$ ^; \. ~" A
begin
7 F' O2 r; v& _) s7 |/ r1 W if(SHORT) STATE<=S;, Z: U1 r4 b1 E# Q: |7 b5 h" }3 T0 y
if (LONG) STATE <=U;; X- G1 h1 `6 ~3 D- n" L7 c1 a' R
if(END_CHAR) STATE<=DONE;
) e1 h' B; z- { LETTER_REG <= STATE;( I3 _0 d0 @. n! i4 u. b: i# o6 b
end; r& N( N# ]: ^6 q) L# _
J:9 O4 q5 Z0 j1 t- l8 ]* @+ Q
begin% [4 ]- a. _& S+ \
if(END_CHAR) STATE<=DONE;" y' T0 w9 Z! H$ U
LETTER_REG <= STATE;
; S( h' D. C8 M end( r' V, `6 W* W. D' ]; h$ ]
K:
/ s/ I$ f1 M1 F begin
5 B4 o, j1 M7 h" c$ `$ G$ V5 W. f if(SHORT) STATE<=C;
) M" R1 W. i- p( K" y2 E+ C% V$ a( e if (LONG) STATE <=Y;
! p: Y5 q* M) |7 h if(END_CHAR) STATE<=DONE;: C# M- L8 e% t* a; O8 d- \3 p
LETTER_REG <= STATE;% B/ J/ k) F- _+ K$ ?) ]/ D( a
end
) W8 W$ V) D2 }1 R, ^ L:
, o# L C9 ~, y( O5 g9 v begin8 Y- R3 P7 P! T' w7 X1 H/ K4 c
if(END_CHAR) STATE<=DONE;
& Z' Z- u' {: d5 C LETTER_REG <= STATE;
6 p+ t: k5 z% o& f9 q end8 Z! h7 J3 N4 {* f4 M! p* P9 D
M:4 E7 ~ T: \6 D a8 E5 ?* U) i! `
begin
- k* N, i3 n" [4 ^$ M4 |% \4 U4 T+ V' g if(SHORT) STATE<=G;
) c! i, c0 y5 S4 H" ?( R; M: G if (LONG) STATE <=O;' O6 n+ O! d3 V0 o | |. u
if(END_CHAR) STATE<=DONE;
8 K4 E7 B7 P N0 {1 F LETTER_REG <= STATE;0 a u8 @9 G' i8 ~/ J# `% y4 Z: ~
end3 ?+ ` s4 n* W D/ z" i
N:+ U/ @8 Y7 `5 a$ s, n
begin! @& [3 n( E# ]" b
if(SHORT) STATE<=D;, ~; H: L: k9 V4 A. }) R+ K4 P# q
if (LONG) STATE <=K;+ c# ^- |% C1 C$ ?0 Q6 _/ B l# i
if(END_CHAR) STATE<=DONE;* ]1 ], x) o1 Z; R3 N, G
LETTER_REG <= STATE;
. B+ Y7 M! z1 J* k9 l4 J2 l end: L* u# B o! y8 L% h2 c8 p
O:3 _' J# d6 F8 E+ j
begin
( c0 X1 p$ z" u0 R9 E1 {2 J) Z if(END_CHAR) STATE<=DONE;) Y6 L: P& W* z' M6 N* o
LETTER_REG <= STATE;
8 N7 }6 @2 v8 f# s u end
. v7 C( k. b& R P:8 @8 {) K0 ]4 \, e4 c" b+ g2 g
begin8 k! Z8 M- @0 H8 _4 }; z
if(END_CHAR) STATE<=DONE;
8 _8 q3 Z" ?, @7 z9 A G3 _- h5 z LETTER_REG <= STATE;, w( d' v Y z# k+ Z; x- s: W
end A. p& n' J5 t5 C' ]+ I5 ]
Q:
! G& x1 d/ \9 Y y; N% b begin
0 O' Z0 @0 t3 V s" b4 p if(END_CHAR) STATE<=DONE;5 Q9 z: y$ x( i# c5 A
LETTER_REG <= STATE;
+ M4 S, ^! g0 @5 H& I. Z5 d9 G! K end
( L% I; t0 e3 w1 z, `( {, q- \9 m* t+ f R:
! a+ l2 o( I$ M# m begin) S' i' ?- l3 } G. T2 M
if(SHORT) STATE<=L;
4 p5 L/ [9 J _. T* c- ~2 D2 d if(END_CHAR) STATE<=DONE;! ^+ e9 ]$ v& ^ D$ B
LETTER_REG <= STATE;
& T" s' J @. M end) {/ r1 P0 c' p) Z* X( J+ a
S:4 |( F% L1 j9 M2 Y: Y1 F2 s7 L4 A
begin
+ _6 X8 d N' d! ]8 e7 b if(SHORT) STATE<=H;2 {' ~; o9 U6 Z5 s& D: ]. h* S. h
if (LONG) STATE <=V;4 D: A, n K! d# a5 @$ |9 T
if(END_CHAR) STATE<=DONE;
. g7 | M/ s& y3 e2 C$ u LETTER_REG <= STATE;
+ K2 n4 t+ w* ^) h; T6 v end
" S" c! B7 x. _. R6 k# j, D T:
3 {* f! x# o3 Y5 w8 D# D1 i2 S) ?$ P# T' h begin
* {; A. h" K9 m0 b if(SHORT) STATE<=N;
$ @9 }6 y, l0 ]8 [+ i* ` if (LONG) STATE <=M;3 j3 d' g6 }1 B! N8 u" ?7 H" X
if(END_CHAR) STATE<=DONE;
" C+ u% s9 {$ w& f- C8 q3 p3 V4 c/ q" v LETTER_REG <= STATE;
2 R* k* w* A* j% Z. J end
3 i8 L1 ~* X' N4 n1 V- D" \ U:
/ S! ?* q4 L/ u5 l3 W' T1 X; e, B' G begin
; R+ n' o& U* J if(SHORT) STATE<=F;
C+ ~# o! T* W& V+ L- f5 D C( p if(END_CHAR) STATE<=DONE;; N1 i0 b, r8 L8 N& Z& C/ n- q2 [
LETTER_REG <= STATE;
( h4 ^- c* k4 H2 ~/ x4 F end
2 D& W( `6 w7 v8 v6 q- R V:$ ?& v9 o7 Z4 [% o& c. [
begin# ^5 h0 v7 V$ Q; d
if(END_CHAR) STATE<=DONE;: q/ ?2 ~1 f2 o9 ^" J' H) V
LETTER_REG <= STATE;
7 q" g7 y; _% @5 e# J: X$ \ end2 D" ]/ u) ~! ^* _" ?# r) q, |1 c
W:
& R8 G( b0 x" Q$ o, t; N( W) } begin/ S( _( n! g" h. Y& }7 {
if(SHORT) STATE<=P;
2 r$ m8 X8 X! J T& k if (LONG) STATE <=J;
1 G( T8 z- p. J. ^/ H+ M if(END_CHAR) STATE<=DONE;
8 b( W0 o) Y! |. s/ X LETTER_REG <= STATE;
& U& \# Z2 b7 \' X. x* _+ [6 M$ D/ T end
& f7 C) X/ i( k* \# c$ j X:" U Z9 u# S% N0 [
begin
; P" r) E! F* A: L. T K6 { if(END_CHAR) STATE<=DONE;
7 Y4 G- q, ] K2 R, q4 H LETTER_REG <= STATE;
" Z6 I& w; m1 w end7 Y8 y' e; C5 N/ z0 l' s- l3 l
Y:) D0 w' C' C6 F# ]- e
begin0 W, G3 U& g) a: i4 F( P
if(END_CHAR) STATE<=DONE;( h; K% r8 n" q4 i
LETTER_REG <= STATE;
1 B7 _6 V% N/ ~ I end
, ?! O" |0 s; b, S1 P' b/ b: }2 b Z:
; u' b! z( G4 c" J begin# S: ?$ V) p1 C8 Q; \0 I
if(END_CHAR) STATE<=DONE;7 _- P @$ A& J `' S
LETTER_REG <= STATE;, Q$ v. V7 w% I" D4 H7 ^# o$ N
end4 d6 r0 {& {9 }6 p, E+ y# p# h0 B" k
DONE: STROBE_REG <= 1'b1;1 H0 \8 V1 Z& Z+ P: T3 q
default: STATE <= 5'bXXXXX;) t) Y4 V9 W4 P( J# d* G
endcase
* B% n9 j% f& |3 c" H f end
5 F! v9 Z7 v" c% ]8 R( t) Yend
6 t; C* ?3 l' I5 G% O3 D# k: P" @% B& P7 N% y$ i' q* i* @3 a* P
endmodule, s# L" ^, E, ?7 w
|
|