Update yonga_lz4_decoder_top.v
diff --git a/verilog/rtl/yonga_lz4_decoder_top.v b/verilog/rtl/yonga_lz4_decoder_top.v
index e37bf93..d2600a9 100644
--- a/verilog/rtl/yonga_lz4_decoder_top.v
+++ b/verilog/rtl/yonga_lz4_decoder_top.v
@@ -1,197 +1,202 @@
-// SPDX-FileCopyrightText: 2020 Efabless Corporation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// SPDX-License-Identifier: Apache-2.0
-
-module yonga_lz4_decoder_top (
- input clk,
- input rst,
-
- input valid,
- output reg [31:0] rdata,
- input [31:0] wdata,
- output reg ready,
- input wr_en,
-
- input [7:0] compressed_data1,
- output [7:0] decompressed_data1,
-
- input rx,
- output tx
-);
-
-wire rstn;
-reg select;
-
-reg decompress_data_read_en1;
-reg i_fifo_wr_en1;
-reg [7:0] i_fifo_w_data1;
-reg decompress_fifo_data_ready1;
-
-reg uart_tx_full_flag_control1;
-reg [2:0] uart_tx_full_flag_count1;
-
-wire decompress_fifo_empty1;
-
-wire o_in_fifo_full1;
-wire [7:0] decompress_data1;
-wire idle1;
-
-reg lz4_o_fifo_read_request1;
-wire rx_fifo_not_empty1;
-wire rx_empty1;
-wire [7:0] uart_r_data1;
-wire tx_full1;
-wire [5:0] decompress_fifo_data_count1;
-
-assign rstn = !rst;
-assign rx_fifo_not_empty1 = !rx_empty1;
-
-always@(*) begin
- rdata = 32'b0;
- rdata[0] = idle1;
- rdata[4] = decompress_fifo_empty1;
- rdata[8] = decompress_fifo_data_ready1;
- rdata[12] = o_in_fifo_full1;
-end
-
- yonga_lz4_decoder U1 // LZ4-CORE-1
- (
- .clk (clk),
- .rstn (rstn),
-
- .i_lz4_decompress_enable (1'b0),
- .lz4_decompress_start (1'b0),
-
- .i_compress_data_write (i_fifo_wr_en1),
- .o_compress_fifo_full (o_in_fifo_full1),
- .i_compress_data (i_fifo_w_data1),
-
- .i_decompress_data_read (decompress_data_read_en1),
- .o_decompress_fifo_empty (decompress_fifo_empty1),
- .o_fifo2_data_count (decompress_fifo_data_count1),
- .o_decompress_data (decompressed_data1),
-
- .o_idle (idle1)
- );
-
- // ------------------------------UART------------------
- uart // UART-1
- #(
- .DBIT(8),
- .SB_TICK(16),
- .DVSR(163),
- .DVSR_BIT(8),
- .FIFO_W(2)
- )
- U5(
- .clk(clk),
- .reset(!rstn),
- .tx(tx),
- .rx(rx),
- .rd_uart(rx_fifo_not_empty1),
- .wr_uart(lz4_o_fifo_read_request1),
- .r_data(uart_r_data1),
- .w_data(decompressed_data1),
- .tx_full(tx_full1),
- .rx_empty(rx_empty1)
- );
-
-//------------------------------------------------------------------------------------------------------------//
-//-----------------Uart or Logic Analyzer Select--------------------------------------------------------------//
- always @(posedge clk) begin
- if(rstn == 1'b0)
- select <= 1'b1;
- else begin
- if(valid && !ready) begin
- if(wr_en ==1'b1 && wdata[8] == 1'b1) // uart enable
- select <= 1'b0;
- else if(wr_en ==1'b1 && wdata[9] == 1'b1) // Logic Analyzer enable
- select <= 1'b1;
- end
- end
- end
-//------------------------------------------------------------------------------------------------------------//
-//-----------------Decompress Fifo Data Ready Control---------------------------------------------------------//
- always @(posedge clk) begin
- if(rstn == 1'b0) begin
- decompress_fifo_data_ready1 <= 1'b0;
- end else begin
- if(decompress_fifo_data_count1> 20)
- decompress_fifo_data_ready1 <= 1'b1;
- else
- decompress_fifo_data_ready1 <= 1'b0;
- end
- end
-//------------------------------------------------------------------------------------------------------------//
-
- always @(posedge clk) begin
- if(rstn == 1'b0) begin
- ready <= 1'b0;
- i_fifo_wr_en1 <= 1'b0;
- decompress_data_read_en1 <= 1'b0;
- lz4_o_fifo_read_request1 <= 1'b0;
- i_fifo_w_data1 <= 0;
- uart_tx_full_flag_control1 <= 1'b1;
- uart_tx_full_flag_count1 <= 0;
- end else begin
- ready <= 1'b0;
- i_fifo_wr_en1 <= 1'b0;
- decompress_data_read_en1 <= 1'b0;
-
- if(valid && !ready)
- ready <= 1'b1;
-//------------------------------------------Uart---------------------------------------------------------------//
- if(select == 1'b0) begin // uart enable
-// Write fifo data
- lz4_o_fifo_read_request1 <= decompress_data_read_en1;
-
- if(rx_fifo_not_empty1 == 1'b1)begin
- i_fifo_wr_en1 <= 1'b1;
- i_fifo_w_data1 <= uart_r_data1;
- end
-//------------------------------------------------------------------------------------------------------------//
-// Read fifo data
- if(!decompress_fifo_empty1 && uart_tx_full_flag_control1 == 1 && tx_full1 == 1'b0)begin
- decompress_data_read_en1 <= 1'b1;
- uart_tx_full_flag_control1 <= 1'b0;
- end
-//------------------------------------------------------------------------------------------------------------//
-// uart_tx_full_flag_control
- if(uart_tx_full_flag_control1 == 1'b0 )begin
- if(uart_tx_full_flag_count1 == 2)begin
- uart_tx_full_flag_count1 <= 0;
- uart_tx_full_flag_control1 <= 1'b1;
- end else
- uart_tx_full_flag_count1 <= uart_tx_full_flag_count1+1;
- end
-//------------------------------------------------------------------------------------------------------------//
-//-------------------------------------------Logic Analyzer---------------------------------------------------//
- end else begin
- if(valid && !ready) begin // Logic Analyzer enable
-// Write fifo data
- if(wr_en ==1'b1 && wdata[0]) begin
- i_fifo_wr_en1 <= 1'b1;
- i_fifo_w_data1 <= compressed_data1;
- end
-//------------------------------------------------------------------------------------------------------------//
-// Read fifo data
- if(wr_en ==1'b1 && wdata[4])
- decompress_data_read_en1 <= 1'b1;
- end
-//------------------------------------------------------------------------------------------------------------//
- end
- end
- end
-
-endmodule
+// =====================================================================================
+// (C) COPYRIGHT 2016 YongaTek (Yonga Technology Microelectronics)
+// All rights reserved.
+// This file contains confidential and proprietary information of YongaTek and
+// is protected under international copyright and other intellectual property laws.
+// =====================================================================================
+// Project : lz4_decompress
+// File ID : %%
+// Design Unit Name : user_pro_example.v
+// Description :
+// Comments :
+// Revision : %%
+// Last Changed Date : %%
+// Last Changed By :
+// Designer
+// Name : Bahadir TÜRKOGLU
+// E-mail : bahadir.turkoglu@yongatek.com
+// =====================================================================================
+
+`default_nettype none
+module yonga_lz4_decoder_top (
+ input clk,
+ input rst,
+
+ input valid,
+ output reg [31:0] rdata,
+ input [31:0] wdata,
+ output reg ready,
+ input wr_en,
+
+ input [7:0] compressed_data1,
+ output [7:0] decompressed_data1,
+
+ input rx,
+ output tx
+);
+
+wire rstn;
+reg select;
+
+reg decompress_data_read_en1;
+reg i_fifo_wr_en1;
+reg [7:0] i_fifo_w_data1;
+reg decompress_fifo_data_ready1;
+
+reg uart_tx_full_flag_control1;
+reg [2:0] uart_tx_full_flag_count1;
+
+wire decompress_fifo_empty1;
+
+wire o_in_fifo_full1;
+wire [7:0] decompress_data1;
+wire idle1;
+
+reg lz4_o_fifo_read_request1;
+wire rx_fifo_not_empty1;
+wire rx_empty1;
+wire [7:0] uart_r_data1;
+wire tx_full1;
+wire [5:0] decompress_fifo_data_count1;
+
+assign rstn = !rst;
+assign rx_fifo_not_empty1 = !rx_empty1;
+
+always@(*) begin
+ rdata = 32'b0;
+ rdata[0] = idle1;
+ rdata[4] = decompress_fifo_empty1;
+ rdata[8] = decompress_fifo_data_ready1;
+ rdata[12] = o_in_fifo_full1;
+end
+
+ yonga_lz4_decoder U1 // LZ4-CORE-1
+ (
+ .clk (clk),
+ .rstn (rstn),
+
+ .i_lz4_decompress_enable (1'b0),
+ .lz4_decompress_start (1'b0),
+
+ .i_compress_data_write (i_fifo_wr_en1),
+ .o_compress_fifo_full (o_in_fifo_full1),
+ .i_compress_data (i_fifo_w_data1),
+
+ .i_decompress_data_read (decompress_data_read_en1),
+ .o_decompress_fifo_empty (decompress_fifo_empty1),
+ .o_fifo2_data_count (decompress_fifo_data_count1),
+ .o_decompress_data (decompressed_data1),
+
+ .o_idle (idle1)
+ );
+
+ // ------------------------------UART------------------
+ uart // UART-1
+ #(
+ .DBIT(8),
+ .SB_TICK(16),
+ .DVSR(163),
+ .DVSR_BIT(8),
+ .FIFO_W(2)
+ )
+ U5(
+ .clk(clk),
+ .reset(!rstn),
+ .tx(tx),
+ .rx(rx),
+ .rd_uart(rx_fifo_not_empty1),
+ .wr_uart(lz4_o_fifo_read_request1),
+ .r_data(uart_r_data1),
+ .w_data(decompressed_data1),
+ .tx_full(tx_full1),
+ .rx_empty(rx_empty1)
+ );
+
+//------------------------------------------------------------------------------------------------------------//
+//-----------------Uart or Logic Analyzer Select--------------------------------------------------------------//
+ always @(posedge clk) begin
+ if(rstn == 1'b0)
+ select <= 1'b1;
+ else begin
+ if(valid && !ready) begin
+ if(wr_en ==1'b1 && wdata[8] == 1'b1) // uart enable
+ select <= 1'b0;
+ else if(wr_en ==1'b1 && wdata[9] == 1'b1) // Logic Analyzer enable
+ select <= 1'b1;
+ end
+ end
+ end
+//------------------------------------------------------------------------------------------------------------//
+//-----------------Decompress Fifo Data Ready Control---------------------------------------------------------//
+ always @(posedge clk) begin
+ if(rstn == 1'b0) begin
+ decompress_fifo_data_ready1 <= 1'b0;
+ end else begin
+ if(decompress_fifo_data_count1> 20)
+ decompress_fifo_data_ready1 <= 1'b1;
+ else
+ decompress_fifo_data_ready1 <= 1'b0;
+ end
+ end
+//------------------------------------------------------------------------------------------------------------//
+
+ always @(posedge clk) begin
+ if(rstn == 1'b0) begin
+ ready <= 1'b0;
+ i_fifo_wr_en1 <= 1'b0;
+ decompress_data_read_en1 <= 1'b0;
+ lz4_o_fifo_read_request1 <= 1'b0;
+ i_fifo_w_data1 <= 0;
+ uart_tx_full_flag_control1 <= 1'b1;
+ uart_tx_full_flag_count1 <= 0;
+ end else begin
+ ready <= 1'b0;
+ i_fifo_wr_en1 <= 1'b0;
+ decompress_data_read_en1 <= 1'b0;
+
+ if(valid && !ready)
+ ready <= 1'b1;
+//------------------------------------------Uart---------------------------------------------------------------//
+ if(select == 1'b0) begin // uart enable
+// Write fifo data
+ lz4_o_fifo_read_request1 <= decompress_data_read_en1;
+
+ if(rx_fifo_not_empty1 == 1'b1)begin
+ i_fifo_wr_en1 <= 1'b1;
+ i_fifo_w_data1 <= uart_r_data1;
+ end
+//------------------------------------------------------------------------------------------------------------//
+// Read fifo data
+ if(!decompress_fifo_empty1 && uart_tx_full_flag_control1 == 1 && tx_full1 == 1'b0)begin
+ decompress_data_read_en1 <= 1'b1;
+ uart_tx_full_flag_control1 <= 1'b0;
+ end
+//------------------------------------------------------------------------------------------------------------//
+// uart_tx_full_flag_control
+ if(uart_tx_full_flag_control1 == 1'b0 )begin
+ if(uart_tx_full_flag_count1 == 2)begin
+ uart_tx_full_flag_count1 <= 0;
+ uart_tx_full_flag_control1 <= 1'b1;
+ end else
+ uart_tx_full_flag_count1 <= uart_tx_full_flag_count1+1;
+ end
+//------------------------------------------------------------------------------------------------------------//
+//-------------------------------------------Logic Analyzer---------------------------------------------------//
+ end else begin
+ if(valid && !ready) begin // Logic Analyzer enable
+// Write fifo data
+ if(wr_en ==1'b1 && wdata[0]) begin
+ i_fifo_wr_en1 <= 1'b1;
+ i_fifo_w_data1 <= compressed_data1;
+ end
+//------------------------------------------------------------------------------------------------------------//
+// Read fifo data
+ if(wr_en ==1'b1 && wdata[4])
+ decompress_data_read_en1 <= 1'b1;
+ end
+//------------------------------------------------------------------------------------------------------------//
+ end
+ end
+ end
+
+endmodule