zynq板zedboard+vitis设计(三)状态机及中断,PL与PS部分的状态交互

该文介绍了如何在Zynq平台上使用状态机和中断实现PL与PS部分的状态交互。状态机在接收到开始指令后触发PS端中断,PS端执行任务并返回响应后,状态机切换状态,LED灯亮起。当检测到按键按下时,状态机返回初始状态。文章提供了状态机代码、BlockDesign配置和Vitis中断处理程序的实现。

前言

本期讲的是一个状态机以及中断相结合的应用,展示的试验功能较为简单,主要是实现PL与PS部分的状态交互。

1.状态机部分

首先是状态机实现的功能。初始处于idle状态(led_idle亮起)收到开始指令(start)后切换到状态a,并向ps端发出一条指令,使ps端产生中断并执行相应命令(这里是输出一句话)。ps端完成任务后,返回一条指令done,状态机收到done指令后切换到状态b,并点亮led灯。保持b状态直到检测到按下按键(key),熄灭led并切回idle状态。

状态机代码

module blog(
input clk,
input rst_n,
input key,
input start,
input done,

output reg print,
output reg led_done,
output reg led_idle
);

parameter idle=0,a=1,b=2;
reg [1:0] state,nstate;

always @(posedge clk or negedge rst_n)begin
    if(!rst_n)
        state<=idle;
    else
        state<=nstate;
end

always @(*)begin
    case(state)
        idle:begin
            if(start)
                nstate=a;
            else
                nstate=state;
        end
        a:begin
            if(done)
                nstate=b;
            else
                nstate=state;
        end
        b:begin
            if(key)
                nstate=idle;
            else
    
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值