blob: 230f6255f1b902080da2244cecbd63f3d8acdbea [file] [log] [blame]
// SPDX-FileCopyrightText: 2020 Muhammad Hadir Khan
//
// 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
package uart
import chisel3._
class UartReg2HW extends Bundle {
val intr_state = new Bundle {
val tx_empty = new Bundle {
val q = Output(Bool())
}
val rx_overflow = new Bundle {
val q = Output(Bool())
}
val rx_frame_err = new Bundle {
val q = Output(Bool())
}
val rx_break_err = new Bundle {
val q = Output(Bool())
}
val rx_parity_err = new Bundle {
val q = Output(Bool())
}
}
val intr_enable = new Bundle {
val tx_empty = new Bundle {
val q = Output(Bool())
}
val rx_overflow = new Bundle {
val q = Output(Bool())
}
val rx_frame_err = new Bundle {
val q = Output(Bool())
}
val rx_break_err = new Bundle {
val q = Output(Bool())
}
val rx_parity_err = new Bundle {
val q = Output(Bool())
}
}
val intr_test = new Bundle {
val tx_empty = new Bundle {
val q = Output(Bool())
val qe = Output(Bool())
}
val rx_overflow = new Bundle {
val q = Output(Bool())
val qe = Output(Bool())
}
val rx_frame_err = new Bundle {
val q = Output(Bool())
val qe = Output(Bool())
}
val rx_break_err = new Bundle {
val q = Output(Bool())
val qe = Output(Bool())
}
val rx_parity_err = new Bundle {
val q = Output(Bool())
val qe = Output(Bool())
}
}
val ctrl = new Bundle {
val tx = new Bundle {
val q = Output(Bool())
}
val rx = new Bundle {
val q = Output(Bool())
}
val slpbk = new Bundle { // system loop-back enable
val q = Output(Bool())
}
val llpbk = new Bundle {
val q = Output(Bool())
}
val parity_en = new Bundle {
val q = Output(Bool())
}
val parity_odd = new Bundle {
val q = Output(Bool())
}
val rxblvl = new Bundle { // trigger level for rx break detection
val q = Output(Bool())
}
val nco = new Bundle { // baud clock rate control
val q = Output(UInt(16.W))
}
}
val status = new Bundle {
val txfull = new Bundle {
val q = Output(Bool())
val re = Output(Bool())
}
val rxfull = new Bundle {
val q = Output(Bool())
val re = Output(Bool())
}
val txempty = new Bundle {
val q = Output(Bool())
val re = Output(Bool())
}
val txidle = new Bundle {
val q = Output(Bool())
val re = Output(Bool())
}
val rxidle = new Bundle {
val q = Output(Bool())
val re = Output(Bool())
}
val rxempty = new Bundle {
val q = Output(Bool())
val re = Output(Bool())
}
}
val rdata = new Bundle {
val q = Output(UInt(8.W))
val re = Output(Bool())
}
val wdata = new Bundle {
val q = Output(UInt(8.W))
val qe = Output(Bool())
}
val fifo_ctrl = new Bundle {
val rxrst = new Bundle { // RX fifo reset
val q = Output(Bool())
val qe = Output(Bool())
}
val txrst = new Bundle {
val q = Output(Bool())
val qe = Output(Bool())
}
}
val ovrd = new Bundle {
val txen = new Bundle {
val q = Output(Bool())
}
val txval = new Bundle {
val q = Output(Bool())
}
}
}
class UartHw2Reg extends Bundle {
val intr_state = new Bundle {
val tx_empty = new Bundle {
val d = Input(Bool())
val de = Input(Bool())
}
val rx_overflow = new Bundle {
val d = Input(Bool())
val de = Input(Bool())
}
val rx_frame_err = new Bundle {
val d = Input(Bool())
val de = Input(Bool())
}
val rx_break_err = new Bundle {
val d = Input(Bool())
val de = Input(Bool())
}
val rx_parity_err = new Bundle {
val d = Input(Bool())
val de = Input(Bool())
}
}
val status = new Bundle {
val txfull = new Bundle {
val d = Input(Bool())
}
val rxfull = new Bundle {
val d = Input(Bool())
}
val txempty = new Bundle {
val d = Input(Bool())
}
val txidle = new Bundle {
val d = Input(Bool())
}
val rxidle = new Bundle {
val d = Input(Bool())
}
val rxempty = new Bundle {
val d = Input(Bool())
}
}
val rdata = new Bundle {
val d = Input(UInt(8.W))
}
val fifo_status = new Bundle {
val txlvl = new Bundle {
val d = Input(UInt(6.W))
}
val rxlvl = new Bundle {
val d = Input(UInt(6.W))
}
}
}