Zebu UART例子解读
本篇文章中我们先来看看一个UART Transactor的例子,我们可以通过这个例子来理解ZeBu中transactor的具体概念和基本应用,另外还可以了解一下ZeBu运行的整个流程。首先我们来看看DUT。
UART DUT wrappter
在每个ZEBU的工程中,DUT都要有一个WRAPPTER,这个wrapper负责例化DUT,产生必要的时钟,挂载必要的transactor等等,我们来看看UART例子的wrapper:
// 例化DUT
dut dut (
.clk (clk),
.rstn (rstn),
.RTS_0 (RTS_0),
.CTS_0 (CTS_0),
.TxD_0 (TxD_0),
.RxD_0 (RxD_0),
.RTS_1 (RTS_1),
.CTS_1 (CTS_1),
.TxD_1 (TxD_1),
.RxD_1 (RxD_1)
);
// 例化Driver
uart_driver uart_driver_0(
.CTS (RTS_0),
.RTS (CTS_0),
.TxD (RxD_0),
.RxD (TxD_0),
.xtor_cclock0 (clk),
.save ()
);
// 例化第二个driver, 为什么要两个,是因为IP支持两路串口?
uart_driver uart_driver_1(
.CTS (RTS_1),
.RTS (CTS_1),
.TxD (RxD_1),
.RxD (TxD_1),
`ifndef ZEBU_NO_RTB
.xtor_cclock0 (clk),
`endif
.save ()
);
// 例化时钟
zceiClockPort clockPort0(
.cclock (clk),
.cresetn (rstn)
);
在上面的wrapper中,我们可以看到实际上我们使用了两个uart_driver
来连接我们的DUT,这两个uart_driver
会和我们的C语言程序进行通信,而这个uart_driver的内容是加密的,我们也看不到具体的实现。
最后更新于 2019-03-12 12:14:04 并被添加「」标签,已有 3592 位童鞋阅读过。
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。