Chisel实现最简单UART

it2025-08-05  6

Uart.scala

import org.scalatest._ import chiseltest._ import chisel3._ import scala.util.Random class UART_test extends FlatSpec with ChiselScalatestTester with Matchers { behavior of "Test UART" it should "Transmit data" in{ test(new UART_tb) { c=> val datas_len = 10 val datas = new Array[Int](datas_len) val data = "b10101010".U for(i <- 0 until datas_len) { datas(i) = Random.nextInt(256) // println(s"${datas(i)}") } for(i <- 0 until datas_len) { c.io.data.bits.poke(datas(i).U) c.io.data.valid.poke(true.B) c.clock.step() c.io.data.valid.poke(false.B) // 10bits c.clock.step(9) c.io.data_out.bits.expect(datas(i).U) c.io.data_out.valid.expect(true.B) } } } }

UART_test.scala

import org.scalatest._ import chiseltest._ import chisel3._ import scala.util.Random class UART_test extends FlatSpec with ChiselScalatestTester with Matchers { behavior of "Test UART" it should "Transmit data" in{ test(new UART_tb) { c=> val datas_len = 10 val datas = new Array[Int](datas_len) val data = "b10101010".U for(i <- 0 until datas_len) { datas(i) = Random.nextInt(256) // println(s"${datas(i)}") } for(i <- 0 until datas_len) { c.io.data.bits.poke(datas(i).U) c.io.data.valid.poke(true.B) c.clock.step() c.io.data.valid.poke(false.B) // 10bits c.clock.step(9) c.io.data_out.bits.expect(datas(i).U) c.io.data_out.valid.expect(true.B) } } } }
最新回复(0)