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

Subversion Repositories yacc

[/] [yacc/] [trunk/] [bench/] [verilog/] [yacc_test_uart_echo.v] - Diff between revs 2 and 4

Only display areas with differences | Details | Blame | View Log

Rev 2 Rev 4
//Apr.4.2005
//Apr.4.2005
//Test Bench for calculator using URAT ECHO BACK
//Test Bench for calculator using URAT ECHO BACK
 
 
`include "define.h"
`include "define.h"
`timescale 1ns/1ps
`timescale 1ns/1ps
 
 
module yacc_test;
module yacc_test;
        reg clock=0;
        reg clock=0;
        reg Reset=0;
        reg Reset=0;
        reg int_req_usr=0;
        reg int_req_usr=0;
        wire RXD;
        wire RXD;
        wire TXD=RXD;
        wire TXD=RXD;
        wire [31:0] mem_data_w;
        wire [31:0] mem_data_w;
        wire mem_write;
        wire mem_write;
        wire [15:0] mem_address;
        wire [15:0] mem_address;
        always #10 clock=~clock;
        always #10 clock=~clock;
 
 
 
 
 
 
        initial begin
        initial begin
                Reset=0;
                Reset=0;
                #800 Reset=1;
                #800 Reset=1;
        end
        end
 
 
`ifdef RTL_SIMULATION
`ifdef RTL_SIMULATION
 yacc cpu(.clock(clock),.Async_Reset(Reset),.MemoryWData(mem_data_w),
 yacc cpu(.clock(clock),.Async_Reset(Reset),.MemoryWData(mem_data_w),
                  .MWriteFF(mem_write),
                  .MWriteFF(mem_write),
                  .data_port_address(mem_address),.RXD(RXD),.TXD(TXD));
                  .data_port_address(mem_address),.RXD(RXD),.TXD(TXD));
`else
`else
        yacc cpu(.clock(clock),.Async_Reset(Reset),        .RXD(RXD),.TXD(TXD));
        yacc cpu(.clock(clock),.Async_Reset(Reset),        .RXD(RXD),.TXD(TXD));
 
 
`endif
`endif
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
        task Cprint;// String OUT until the byte 00 or xx detected with least Byte first and justified.
        task Cprint;// String OUT until the byte 00 or xx detected with least Byte first and justified.
                integer i;
                integer i;
                begin :Block
                begin :Block
                        i=0;
                        i=0;
                        while (1) begin
                        while (1) begin
                                if (char_buffer[i*8 +:8] ===8'h00 || char_buffer[i*8 +:8]===8'hxx) begin
                                if (char_buffer[i*8 +:8] ===8'h00 || char_buffer[i*8 +:8]===8'hxx) begin
                                                disable Block;
                                                disable Block;
                                end
                                end
                                $write("%c",char_buffer[i*8 +:8]);
                                $write("%c",char_buffer[i*8 +:8]);
                                i=i+1;
                                i=i+1;
                        end
                        end
                end
                end
        endtask
        endtask
 
 
   reg [0:640*2-1] char_buffer;
   reg [0:640*2-1] char_buffer;
   integer  counter=0;
   integer  counter=0;
   always @ (posedge clock ) begin
   always @ (posedge clock ) begin
            if ((mem_write === 1'b1)) begin
            if ((mem_write === 1'b1)) begin
//                 if (mem_data_w==32'h0101_0101) $stop;     
//                 if (mem_data_w==32'h0101_0101) $stop;     
                   if (mem_address==`Print_Port_Address) begin
                   if (mem_address==`Print_Port_Address) begin
                                if (mem_data_w[7:0]===8'h00) begin
                                if (mem_data_w[7:0]===8'h00) begin
                                        char_buffer[counter*8 +:8]=mem_data_w[7:0];
                                        char_buffer[counter*8 +:8]=mem_data_w[7:0];
                                        if (char_buffer[0  +:8*7]==="$finish") begin
                                        if (char_buffer[0  +:8*7]==="$finish") begin
                                                        $stop;
                                                        $stop;
 
 
                                        end else if (char_buffer[0  +:8*5]==="$time") begin
                                        end else if (char_buffer[0  +:8*5]==="$time") begin
                                                        $display("Current Time on Simulation=%d",$time);
                                                        $display("Current Time on Simulation=%d",$time);
 
 
                                        end else  Cprint;//$write("%s",char_buffer);
                                        end else  Cprint;//$write("%s",char_buffer);
 
 
                                        for (counter=0; counter< 80*2; counter=counter+1) begin
                                        for (counter=0; counter< 80*2; counter=counter+1) begin
                                                char_buffer[counter*8 +:8]=8'h00;
                                                char_buffer[counter*8 +:8]=8'h00;
                                        end
                                        end
                                        counter=0;
                                        counter=0;
 
 
                                end else begin
                                end else begin
                                        char_buffer[counter*8 +:8]=mem_data_w[7:0];
                                        char_buffer[counter*8 +:8]=mem_data_w[7:0];
                                        counter=counter+1;
                                        counter=counter+1;
                                end
                                end
                   end
                   end
           else if (mem_address==`Print_CAHR_Port_Address) begin
           else if (mem_address==`Print_CAHR_Port_Address) begin
                                $write("%h ",mem_data_w[7:0]);
                                $write("%h ",mem_data_w[7:0]);
                   end else if (mem_address==`Print_INT_Port_Address) begin
                   end else if (mem_address==`Print_INT_Port_Address) begin
                                $write("%h ",mem_data_w[15:0]);//Little Endian 
                                $write("%h ",mem_data_w[15:0]);//Little Endian 
                   end else if (mem_address==`Print_LONG_Port_Address) begin
                   end else if (mem_address==`Print_LONG_Port_Address) begin
                                $write("%h ",mem_data_w[31:0]);//Big Endian
                                $write("%h ",mem_data_w[31:0]);//Big Endian
                   end
                   end
        end //if
        end //if
   end //always
   end //always
 
 
 
 
//uart read port
//uart read port
  wire [7:0] buffer_reg;
  wire [7:0] buffer_reg;
  wire int_req;
  wire int_req;
  reg sync_reset;
  reg sync_reset;
 
 
  localparam LF=8'h0a;
  localparam LF=8'h0a;
        always @(posedge clock, negedge Reset) begin
        always @(posedge clock, negedge Reset) begin
                if (!Reset) sync_reset <=1'b1;
                if (!Reset) sync_reset <=1'b1;
                else sync_reset<=1'b0;
                else sync_reset<=1'b0;
        end
        end
 
 
   `define DISABLE_HOST_UART_READ
   `define DISABLE_HOST_UART_READ
`ifndef  DISABLE_HOST_UART_READ
`ifndef  DISABLE_HOST_UART_READ
   uart_read   uart_read_port( .sync_reset(sync_reset), .clk(clock), .rxd(TXD),.buffer_reg(buffer_reg), .int_req(int_req));
   uart_read   uart_read_port( .sync_reset(sync_reset), .clk(clock), .rxd(TXD),.buffer_reg(buffer_reg), .int_req(int_req));
 
 
        always @(posedge int_req) begin
        always @(posedge int_req) begin
                begin :local
                begin :local
 
 
                        reg [7:0] local_mem [0:1000];
                        reg [7:0] local_mem [0:1000];
                        integer i=0;
                        integer i=0;
 
 
                        if (i>=1000) $stop;//assert(0);
                        if (i>=1000) $stop;//assert(0);
 
 
                        if (buffer_reg==LF) begin :local2 //pop stack
                        if (buffer_reg==LF) begin :local2 //pop stack
                                integer j;
                                integer j;
                                j=0;
                                j=0;
                                while( j < i) begin
                                while( j < i) begin
                                        $write( "%c",local_mem[j]);
                                        $write( "%c",local_mem[j]);
                                        j=j+1;
                                        j=j+1;
                                end
                                end
                                $write("     : time=%t\n",$time);
                                $write("     : time=%t\n",$time);
                                i=0;//clear stack        
                                i=0;//clear stack        
                        end else begin//push stack
                        end else begin//push stack
 
 
                                local_mem[i]=buffer_reg;
                                local_mem[i]=buffer_reg;
                                i=i+1;
                                i=i+1;
                         end
                         end
                end
                end
 
 
        end
        end
`endif
`endif
endmodule
endmodule
 
 
 
 

powered by: WebSVN 2.1.0

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