33module controller_tb ();
44
55logic clk, rx, rst_n, tx;
6+ logic [7 : 0 ] tx_data;
7+ logic tx_en;
8+ logic tx_busy;
9+ logic [7 : 0 ] tx_data_memory [0 : 16 ];
10+ logic [4 : 0 ] pointer;
611
712initial begin
813 $dumpfile (" build/controller.vcd" );
@@ -12,7 +17,7 @@ initial begin
1217
1318 # 20 rst_n = 1 ;
1419
15- # 3000 ;
20+ # 12000 ;
1621
1722 $finish ;
1823end
@@ -21,7 +26,7 @@ logic [7:0] uart_rx_data;
2126
2227always # 1 clk = ~ clk;
2328
24- parameter BIT_RATE = 115200 ;
29+ parameter BIT_RATE = 4000000 ;
2530parameter PAYLOAD_BITS = 8 ;
2631parameter CLK_FREQ = 50000000 ;
2732
@@ -52,14 +57,10 @@ uart_tx #(
5257 .uart_tx_data (tx_data)
5358);
5459
55- logic [7 : 0 ] tx_data;
56- logic tx_en;
57- logic tx_busy;
58-
5960
6061Controller # (
6162 .CLK_FREQ (50000000 ),
62- .BIT_RATE (115200 ),
63+ .BIT_RATE (BIT_RATE ),
6364 .PAYLOAD_BITS (8 ),
6465 .BUFFER_SIZE (8 ),
6566 .PULSE_CONTROL_BITS (32 ),
@@ -102,9 +103,6 @@ Controller #(
102103);
103104
104105
105- logic [7 : 0 ] tx_data_memory [0 : 16 ];
106- logic [3 : 0 ] pointer;
107-
108106initial begin
109107 tx_data_memory[0 ] = 8'h00 ;
110108 tx_data_memory[1 ] = 8'h00 ;
@@ -126,14 +124,14 @@ end
126124
127125
128126always_ff @ ( posedge clk ) begin : TX_DATA_SEND
129- if (rst_n) begin
127+ if (! rst_n) begin
130128 tx_data <= 8'h00 ;
131129 pointer <= 0 ;
132130 end else begin
133- if (! tx_busy && ~ ( & pointer) ) begin
134- tx_data <= tx_data_memory[pointer];
135- pointer <= pointer + 1 ;
136- tx_en <= 1'b1 ;
131+ if (! tx_busy && ! pointer[ 4 ] && ! tx_en ) begin
132+ tx_data <= tx_data_memory[pointer];
133+ pointer <= pointer + 1 ;
134+ tx_en <= 1'b1 ;
137135 end else begin
138136 tx_en <= 1'b0 ;
139137 end
0 commit comments