OpenCores
URL https://opencores.org/ocsvn/yacc/yacc/trunk

Subversion Repositories yacc

[/] [yacc/] [trunk/] [bench/] [verilog/] [yacc_test_uart_echo.v] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 tak.sugawa
//Apr.4.2005
2
//Test Bench for calculator using URAT ECHO BACK
3
 
4
`include "define.h"
5
`timescale 1ns/1ps
6
 
7
module yacc_test;
8
        reg clock=0;
9
        reg Reset=0;
10
        reg int_req_usr=0;
11
        wire RXD;
12
        wire TXD=RXD;
13
        wire [31:0] mem_data_w;
14
        wire mem_write;
15
        wire [15:0] mem_address;
16
        always #10 clock=~clock;
17
 
18
 
19
 
20
        initial begin
21
                Reset=0;
22
                #800 Reset=1;
23
        end
24
 
25
`ifdef RTL_SIMULATION
26
 yacc cpu(.clock(clock),.Async_Reset(Reset),.MemoryWData(mem_data_w),
27
                  .MWriteFF(mem_write),
28
                  .data_port_address(mem_address),.RXD(RXD),.TXD(TXD));
29
`else
30
        yacc cpu(.clock(clock),.Async_Reset(Reset),        .RXD(RXD),.TXD(TXD));
31
 
32
`endif
33
 
34
 
35
 
36
 
37
 
38
 
39
 
40
 
41
        task Cprint;// String OUT until the byte 00 or xx detected with least Byte first and justified.
42
                integer i;
43
                begin :Block
44
                        i=0;
45
                        while (1) begin
46
                                if (char_buffer[i*8 +:8] ===8'h00 || char_buffer[i*8 +:8]===8'hxx) begin
47
                                                disable Block;
48
                                end
49
                                $write("%c",char_buffer[i*8 +:8]);
50
                                i=i+1;
51
                        end
52
                end
53
        endtask
54
 
55
   reg [0:640*2-1] char_buffer;
56
   integer  counter=0;
57
   always @ (posedge clock ) begin
58
            if ((mem_write === 1'b1)) begin
59
//                 if (mem_data_w==32'h0101_0101) $stop;     
60
                   if (mem_address==`Print_Port_Address) begin
61
                                if (mem_data_w[7:0]===8'h00) begin
62
                                        char_buffer[counter*8 +:8]=mem_data_w[7:0];
63
                                        if (char_buffer[0  +:8*7]==="$finish") begin
64
                                                        $stop;
65
 
66
                                        end else if (char_buffer[0  +:8*5]==="$time") begin
67
                                                        $display("Current Time on Simulation=%d",$time);
68
 
69
                                        end else  Cprint;//$write("%s",char_buffer);
70
 
71
                                        for (counter=0; counter< 80*2; counter=counter+1) begin
72
                                                char_buffer[counter*8 +:8]=8'h00;
73
                                        end
74
                                        counter=0;
75
 
76
                                end else begin
77
                                        char_buffer[counter*8 +:8]=mem_data_w[7:0];
78
                                        counter=counter+1;
79
                                end
80
                   end
81
           else if (mem_address==`Print_CAHR_Port_Address) begin
82
                                $write("%h ",mem_data_w[7:0]);
83
                   end else if (mem_address==`Print_INT_Port_Address) begin
84
                                $write("%h ",mem_data_w[15:0]);//Little Endian 
85
                   end else if (mem_address==`Print_LONG_Port_Address) begin
86
                                $write("%h ",mem_data_w[31:0]);//Big Endian
87
                   end
88
        end //if
89
   end //always
90
 
91
 
92
//uart read port
93
  wire [7:0] buffer_reg;
94
  wire int_req;
95
  reg sync_reset;
96
 
97
  localparam LF=8'h0a;
98
        always @(posedge clock, negedge Reset) begin
99
                if (!Reset) sync_reset <=1'b1;
100
                else sync_reset<=1'b0;
101
        end
102
 
103
   `define DISABLE_HOST_UART_READ
104
`ifndef  DISABLE_HOST_UART_READ
105
   uart_read   uart_read_port( .sync_reset(sync_reset), .clk(clock), .rxd(TXD),.buffer_reg(buffer_reg), .int_req(int_req));
106
 
107
        always @(posedge int_req) begin
108
                begin :local
109
 
110
                        reg [7:0] local_mem [0:1000];
111
                        integer i=0;
112
 
113
                        if (i>=1000) $stop;//assert(0);
114
 
115
                        if (buffer_reg==LF) begin :local2 //pop stack
116
                                integer j;
117
                                j=0;
118
                                while( j < i) begin
119
                                        $write( "%c",local_mem[j]);
120
                                        j=j+1;
121
                                end
122
                                $write("     : time=%t\n",$time);
123
                                i=0;//clear stack        
124
                        end else begin//push stack
125
 
126
                                local_mem[i]=buffer_reg;
127
                                i=i+1;
128
                         end
129
                end
130
 
131
        end
132
`endif
133
endmodule
134
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.