1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
| `include "./../../src/define.sv"
module top( input logic sys_clk_p, input logic sys_clk_n, input logic sys_rst_n,
input logic key_in, input logic uart_rx, output logic uart_tx, output logic [3:0] led );
localparam CLK_FRE = 100000000; localparam BAUDRATE = 115200; localparam PARITY = 0; localparam ODD_EVEN = 1; localparam TX_DW = 25; localparam RX_DW = 2; localparam TX_HEAD = 8'h5a; localparam TX_TAIL = 8'ha5; localparam RX_HEAD = 8'h5a; localparam RX_TAIL = 8'ha5;
logic sys_clk; logic rst_n; logic riscv_rst_n; logic [3:0] led_pattern; (*mark_debug = "true"*) logic key_out; (*mark_debug = "true"*) logic [31:0] test_case; (*mark_debug = "true"*) logic [31:0] reg_s10; (*mark_debug = "true"*) logic [31:0] reg_s11; logic [1:0] ts_flag;
logic [TX_DW*8-1:0] send_success; logic [TX_DW*8-1:0] send_fail; logic tx_vld; logic [TX_DW*8-1:0] tx_data; logic tx_done; logic rx_vld; logic [RX_DW*8-1:0] rx_data;
assign ts_flag = {reg_s10[0], reg_s11[0]};
assign led_pattern = {2'h0, ts_flag};
assign riscv_rst_n = rst_n & key_out;
assign send_success = "risv-v test success !!!!\n"; assign send_fail = "risv-v test fail !!!!\n";
assign tx_vld = rx_vld && (rx_data == 16'h55aa);
assign tx_data = (ts_flag == 2'b11) ? send_success : send_fail;
clk_pll u_clk_pll_inst( .clk_out1 (sys_clk), .resetn (sys_rst_n), .locked (rst_n), .clk_in1_p (sys_clk_p), .clk_in1_n (sys_clk_n) ); led_top u_led_top_inst( .clk (sys_clk), .rst_n (rst_n), .led_pattern (led_pattern), .led (led) );
key_top u_key_top_inst( .clk (sys_clk), .rst_n (rst_n), .key_in (key_in), .key_out (key_out), .key_redge (), .key_fedge () );
riscv #( .FILE (`FILE), .AW (`AW), .DW (`DW) ) u_riscv_inst( .clk (sys_clk), .rst_n (riscv_rst_n), .test_case (test_case), .reg_s10 (reg_s10), .reg_s11 (reg_s11) );
uart_top #( .CLK_FRE (CLK_FRE), .BAUDRATE (BAUDRATE), .PARITY (PARITY), .ODD_EVEN (ODD_EVEN), .SEND_NBYTE (TX_DW), .RECV_NBYTE (RX_DW), .TX_HEAD (TX_HEAD), .TX_TAIL (TX_TAIL), .RX_HEAD (RX_HEAD), .RX_TAIL (RX_TAIL) ) u_uart_top_inst( .clk (sys_clk), .rst_n (rst_n), .tx_ctrl (4'h0), .rx_ctrl (4'h0), .rxd (uart_rx), .send_en (tx_vld), .send_data (tx_data), .send_done (tx_done), .txd (uart_tx), .recv_vld (rx_vld), .recv_data (rx_data) ); endmodule
|