SystemC写UART发生模块

博客介绍了UART开发相关内容,可参考其他博主了解UART原理。涉及UART.h头函数,计数线程计数满会使UART0::prc_outputs()中case跳转,start_flag为1时并行加载输入数据等。还提到monitor模块打印信息,main.cpp完成端口绑定,展示了结果和波形文件。

1.UART原理部分可以参考其他博主。

UART.h头函数

#include <iostream>
#include "systemc.h"
#define BPS_CNT  (50000000/9600)        // 波特率9600

/*
*端口声明
*进行声明
*/
SC_MODULE(UART0) {
    sc_in  < bool >        clk, start_flag , sys_rst_n;        // 时钟、起始标识、复位信号
    sc_in  < sc_bv<8> > q ;    // 8位数据的输入
    sc_out < bool >          tx_flag;        // 发送过程标志,高电平则是发送数据的状态
    sc_out < sc_bv<8> > q_output;    // 右移一位后的结果
    sc_out < sc_bv<1> > uart_txd;    // 发送的1位数据,起始位、第0位,...,第8位,终止位

    sc_signal  < sc_bv<8> > tx_data;
    sc_signal < sc_uint<4> >  tx_cnt;
    sc_signal < sc_uint<15> > bps_cnt;
    void prc_outputs();  // 组合逻辑
    void BPS_TIMER();    // 计数,即clock与波特率的转换
    void load_data();    // 加载输入数据(时序逻辑)

    SC_CTOR(UART0) {
        SC_METHOD(prc_outputs);    // 组合逻辑,把各个敏感信号都列出来哦
        sensitive << tx_cnt << start_flag <<
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值