状态机架构 例4SPI接口项目

准备工作明确功能 输入输出信号列表+功能描述画出功能波形图 每个信号的变化情况分析输出划分状态1)csEWEN:收到start拉高,10个SK拉低,经过一个tCS拉高,WRITE: 收到start拉高,到18个SK拉低,经过一个tCS拉高,收到do=1拉低READ:收到start拉高,18个SK拉低,经过一个tCS拉高.可以划分状态为:IDLE∶初始状态,模块在等待 start 信号有效。 WR_RD∶读/写状态。 TCS∶片选信号拉低。 DO∶等待写入操作完成。sk通过计数产生1M
摘要由CSDN通过智能技术生成

项目说明

实现AT93C46的接口协议,能够对EEPROM实现EWEN, WRITE, READ的功能。

准备工作

  1. 明确功能 输入输出信号列表+功能描述
  2. 画出功能波形图 每个信号的变化情况
  3. 分析输出划分状态
    1)cs
    EWEN:收到start拉高,10个SK拉低,经过一个tCS拉高,
    WRITE: 收到start拉高,到18个SK拉低,经过一个tCS拉高,收到do=1拉低
    READ:收到start拉高,18个SK拉低,经过一个tCS拉高.
    可以划分状态为:IDLE∶初始状态,模块在等待 start 信号有效。 WR∶写状态。 TCS∶片选信号拉低。 DO∶等待写入操作完成。
    2)sk
    通过计数产生1MHz的芯片时钟
    EWEN:WR状态,产生10个;WRITE, READ均是18个
    3)di
    在WR状态串行产生
    4)rdy
    收到start时即拉低,直到全部操作完成才拉高。
    5)rdata,
    READ时,将do逐比特从高位开始赋值给rdata
    6)rdata_vld
    READ结束,产生一个时钟的高电平。
  4. 状态转移图
    在这里插入图片描述

状态机设计

reg[3:0] state_c,state_n;
//状态编码
parameter IDLE = 4'b0001;
parameter WR = 4'b0010;
parameter TCS = 4'b0100;
parameter DO = 4'b1000;

always  @(posedge clk or negedge rst_n)begin
    if(rst_n==1'b0)begin
        state_c <= IDLE;
    end
    else begin
        state_c <=state_n; 
    end
end

always@ (*) begin
	case(state_c)
		IDLE: begin
			if(idle2wr_start) state_n = WR;
			else state_n = state_c;
		end
		WR: begin
			if(wr2tcs_start)
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值