【9】Verilog练习-串口指令处理器
我的学记|刘航宇的博客

【9】Verilog练习-串口指令处理器

刘航宇
3年前发布 /未收录,推送中...
温馨提示:
本文最后更新于2022年11月29日,已超过851天没有更新,若内容或图片失效,请留言反馈。

目录

理论:

图片[1] - 【9】Verilog练习-串口指令处理器 - 我的学记|刘航宇的博客
图片[2] - 【9】Verilog练习-串口指令处理器 - 我的学记|刘航宇的博客
图片[3] - 【9】Verilog练习-串口指令处理器 - 我的学记|刘航宇的博客

代码

RX、TX需要与之在相同目录下

cmd_pro

//指令处理器
`timescale 1ns/10ps
module cmd_pro(
                clk,
                res,
                din_pro,
                en_din_pro,
                dout_pro,
                en_dout_pro,
                rdy
                );
input            clk;
input            res;
input[7:0]        din_pro;//指令和数据输入端口;
input            en_din_pro;//输入使能;
output[7:0]        dout_pro;//指令执行结果;
output            en_dout_pro;//指令输出使能;
output            rdy;//串口发送模块空闲标志,0表示空闲;

parameter        add_ab=8'h0a;
parameter        sub_ab=8'h0b;
parameter        and_ab=8'h0c;
parameter        or_ab=8'h0d;

reg[2:0]        state;//主状态机寄存器(2^3个状态);
reg[7:0]        cmd_reg,A_reg,B_reg;//存放指令、A和B;
reg[7:0]        dout_pro;
reg                en_dout_pro;

always@(posedge clk or negedge res)
if(~res)begin
    state<=0;cmd_reg<=0;A_reg<=0;B_reg<=0;dout_pro<=0;
    en_dout_pro<=0;
end
else begin
    case(state)
    0://等指令;
    begin
        en_dout_pro<=0;
        if(en_din_pro) begin
            cmd_reg<=din_pro;
            state<=1;
        end
    end
    1://收A;
    begin
        if(en_din_pro) begin
            A_reg<=din_pro;
            state<=2;
        end
    end
    2://收B;
    begin
        if(en_din_pro) begin
            B_reg<=din_pro;
            state<=3;
        end
    end    
    3://指令译码和执行
    begin
        state<=4;
        case(cmd_reg)
        add_ab: begin dout_pro<=A_reg+B_reg; end
        sub_ab: begin dout_pro<=A_reg-B_reg; end
        and_ab: begin dout_pro<=A_reg&B_reg; end
        or_ab: begin dout_pro<=A_reg|B_reg; end
        endcase
    end
    4://发送指令执行结果
    begin
        if(~rdy)begin
            en_dout_pro<=1;
            state<=0;
        end
    end
    default://
    begin
        state<=0;
        en_dout_pro<=0;
    end
    
    endcase
end
endmodule

UART_top

//串口指令处理器
`timescale    1ns/10ps
module UART_top(
                clk,
                res,
                RX,
                TX
                );
input            clk;
input            res;
input            RX;
output            TX;

wire[7:0]        din_pro;
wire            en_din_pro;
wire[7:0]        dout_pro;
wire            en_dout_pro;
wire            rdy;

UART_Rxer UART_Rxer( 
                    .clk(clk),
                    .res(res),
                    .RX(RX),
                    .data_out(din_pro),
                    .en_data_out(en_din_pro)
                    );
UART_TXer UART_TXer( 
                    .clk(clk),
                    .res(res),
                    .data_in(dout_pro),
                    .en_data_in(en_dout_pro),
                    .TX(TX),
                    .rdy(rdy)
                    );
cmd_pro cmd_pro(
                .clk(clk),
                .res(res),
                .din_pro(din_pro),
                .en_din_pro(en_din_pro),
                .dout_pro(dout_pro),
                .en_dout_pro(en_dout_pro),
                .rdy(rdy)
                );
endmodule
//-----testbench of UART_top-----
module UART_top_tb;
reg                    clk,res;
wire                RX;
wire                TX;

reg[45:0]            RX_send;//里面装有串口字节发送数据
assign                RX=RX_send[0];//连接RX;
reg[12:0]            con;

UART_top UART_top(
                    clk,
                    res,
                    RX,
                    TX
                    );
                    
initial begin
                    clk<=0;res<=0;RX_send<={1'b1,8'h09,1'b0,1'b1,8'h06,1'b0,1'b1,8'h0a,1'b0,16'hffff};
                    con<=0;
            #17        res<=1;
            #4000000    $stop;
end
always #5 clk<=~clk;
always@(posedge clk)begin
  if(con==5000-1)begin
    con<=0;
  end
  else begin
    con<=con+1;
  end
  if(con==0)begin
    RX_send[44:0]<=RX_send[45:1];
    RX_send[45]<=RX_send[0]; 
  end
end    

endmodule

现象

图片[4] - 【9】Verilog练习-串口指令处理器 - 我的学记|刘航宇的博客

© 版权声明
THE END
喜欢就支持一下吧
点赞 2 分享 赞赏
时光轻拂,如花雅绽
评论 抢沙发
OωO
  • 惊讶
  • 撇嘴
  • 色
  • 发呆
  • 得意
  • 流泪
  • 害羞
  • 闭嘴
  • 睡
  • 大哭
  • 尴尬
  • 发怒
  • 调皮
  • 呲牙
  • 微笑
  • 难过
  • 酷
  • 抓狂
  • 吐
  • 偷笑
  • 可爱
  • 白眼
  • 傲慢
  • 饥饿
  • 困
  • 惊恐
  • 流汗
  • 憨笑
  • 悠闲
  • 奋斗
  • 咒骂
  • 疑问
  • 嘘
  • 晕
  • 折磨
  • 衰
  • 骷髅
  • 敲打
  • 再见
  • 发抖
  • 爱情
  • 跳跳
  • 猪头
  • 拥抱
  • 蛋糕
  • 炸弹
  • 刀
  • 便便
  • 咖啡
  • 玫瑰
  • 凋谢
  • 爱心
  • 心碎
  • 太阳
  • 月亮
  • 赞
  • 踩
  • 握手
  • 胜利
  • 飞吻
  • 怄火
  • 西瓜
  • 冷汗
  • 擦汗
  • 抠鼻
  • 鼓掌
  • 糗大了
  • 坏笑
  • 左哼哼
  • 右哼哼
  • 哈欠
  • 鄙视
  • 委屈
  • 快哭了
  • 阴险
  • 左亲亲
  • 吓
  • 可怜
  • 菜刀
  • 篮球
  • 示爱
  • 抱拳
  • 勾引
  • 拳头
  • 差劲
  • 爱你
  • NO
  • OK
  • 转圈
  • 挥手
  • 鞭炮
  • 喝彩
  • 爆筋
  • 棒棒糖
  • 喝奶
  • 手枪
  • 茶
  • 眨眼睛
  • 泪奔
  • 无奈
  • 卖萌
  • 小纠结
  • 喷血
  • 斜眼笑
  • doge
  • 惊喜
  • 戳一戳
  • 笑哭
  • 我最美
  • 羊驼
  • 幽灵
  • 大笑
  • 不开心
  • 呃
  • 求求
  • 点赞
  • 无聊
  • 托脸
  • 吃
  • 害怕
  • 飙泪
  • 我不看
  • 托腮
  • 啵啵
  • 糊脸
  • 拍头
  • 扯一扯
  • 舔一舔
  • 蹭一蹭
  • 顶呱呱
  • 抱抱
  • 暴击
  • 开枪
  • 撩一撩
  • 拍桌
  • 拍手
  • 干杯
  • 嘲讽
  • 哼
  • 佛系
  • 掐一掐
  • 颤抖
  • 偷看
  • 扇脸
  • 原谅
  • 喷脸
  • 生日快乐
  • 甩头
  • 扔狗
  • 脑阔疼
  • 沧桑
  • 捂脸
  • 辣眼睛
  • 哦哟
  • 头秃
  • 问号脸
  • 暗中观察
  • emm
  • 吃瓜
  • 呵呵哒
  • 我酸了
  • 汪汪
  • 汗
  • 无眼笑
  • 敬礼
  • 狂笑
  • 面无表情
  • 摸鱼
  • 魔鬼笑
  • 哦
  • 请
  • 睁眼
  • 敲开心
  • 让我康康
  • 摸锦鲤
  • 期待
  • 拿到红包
  • 拜谢
  • 元宝
  • 牛啊
  • 胖三斤
  • 好闪
  • 左拜年
  • 右拜年
  • 右亲亲
  • 牛气冲天
  • 喵喵
  • 打call
  • 变形
  • 仔细分析
  • 菜汪
  • 崇拜
  • 比心
  • 庆祝
  • 拒绝
  • 嫌弃
  • 吃糖
  • 惊吓
  • 生气
  • 举牌牌
  • 烟花
  • 虎虎生威
  • 豹富
  • 花朵脸
  • 我想开了
  • 舔屏
  • 打招呼
  • 酸Q
  • 我方了
  • 大怨种
  • 红包多多
  • 你真棒棒
  • 大展宏兔
  • 福萝卜
  • 坚强
  • 贴贴
  • 敲敲
  • 咦
  • 拜托
  • 尊嘟假嘟
  • 耶
  • 666
  • 裂开
  • 骰子
  • 包剪锤
  • 亲亲
  • 狗狗笑哭
  • 好兄弟
  • 狗狗可怜
  • 超级赞
  • 狗狗生气
  • 芒狗
  • 狗狗疑问
  • 奥特笑哭
  • 彩虹
  • 祝贺
  • 冒泡
  • 气呼呼
  • 忙
  • 波波流泪
  • 超级鼓掌
  • 跺脚
  • 嗨
  • 企鹅笑哭
  • 企鹅流泪
  • 真棒
  • 路过
  • emo
  • 企鹅爱心
  • 晚安
  • 太气了
  • 呜呜呜
  • 太好笑
  • 太头疼
  • 太赞了
  • 太头秃
  • 太沧桑
  • 龙年快乐
  • 新年中龙
  • 新年大龙
  • 略略略
  • 狼狗
  • 抛媚眼
  • 超级ok
  • tui
  • 快乐
  • 超级转圈
  • 别说话
  • 出去玩
  • 闪亮登场
  • 好运来
  • 姐是女王
  • 我听听
  • 臭美
  • 送你花花
  • 么么哒
  • 一起嗨
  • 开心
  • 摇起来
  • 划龙舟
经典
emoji
泡泡
阿鲁
颜文字
取消