Hardware Reference
In-Depth Information
21 //Declarations:-----------------------------------
22
23
//FSM-related declarations:
24
typedef enum logic [2:0]
25
{idle, write1, write2, read1, read2, hold} state;
26
state pr_state, nx_state;
27
28
//Auxiliary-register-related declarations:
29
logic [Abus-1:0] A_reg;
30
31
//Timer-related declarations:
32
logic [$clog2(Tread)-1:0] t, tmax; //rangeā‰„Tread
33
34
//Function construction:
35
function [6:0] integer_to_ssd;
36
input [3:0] inp;
37
case (inp)
38
0: integer_to_ssd = 7'b0000001;
39
1: integer_to_ssd = 7'b1001111;
40
2: integer_to_ssd = 7'b0010010;
41
3: integer_to_ssd = 7'b0000110;
42
4: integer_to_ssd = 7'b1001100;
43
5: integer_to_ssd = 7'b0100100;
44
6: integer_to_ssd = 7'b0100000;
45
7: integer_to_ssd = 7'b0001111;
46
8: integer_to_ssd = 7'b0000000;
47
9: integer_to_ssd = 7'b0000100;
48
10: integer_to_ssd = 7'b0001000;
49
11: integer_to_ssd = 7'b1100000;
50
12: integer_to_ssd = 7'b0110001;
51
13: integer_to_ssd = 7'b1000010;
52
14: integer_to_ssd = 7'b0110000;
53
15: integer_to_ssd = 7'b0111000;
54
default: integer_to_ssd = 7'b1111110;
55
endcase
56
endfunction
57
58 //Statements:--------------------------------------
59
60
//Static SRAM signals:
61
assign CEn = 1'b0;
62
assign OEn = 1'b0;
63
assign UBn = 1'b0;
64
assign LBn = 1'b0;
65
66
//Timer (using strategy #2):
67
always_ff @(posedge clk, posedge rst)
68
if (rst) t <= 0;
69
else if (t < tmax) t <= t + 1;
70
else t <= 0;
71
72
// Auxiliary register:
73
always_ff @(posedge clk, posedge rst)
74
if (rst) A_reg <= 0;
75
else A_reg <= A;
76
Search WWH ::




Custom Search