状态机状态跳转图
因常常需要对寄存器进行配置,因而学习了V3学院的视频课,利用spi协议对寄存器进行配置,在此做个记录,以便日后回顾。
上图为状态机状态转移图,需要先将需要配置的寄存器的信息存放在ROM中,然后将数据读出来,通过SPI协议发送到需要配置的器件。
`timescale 1ns / 1ps
module spi_ctrl(
input clk, //50M
input rst_n,
input work_en, //开始配置寄存器的使能
output reg conf_finish //寄存器配置完成标志
output spi_clk, //1M
output spi_csn,
output spi_sdi,
input spi_sdo,
);
//分频时钟
parameter fenpin_cyc = 5'd25-1;//0到24共25,周期的一半;
reg [4:0] div_cnt;
reg clk_p; //采集数据的分频clk,上升沿采集数据
wire clk_n; //最终给spi_clk的时钟
reg pose_flag; //上升沿标志
//计数
always @ (posedge clk or negedge rst_n) begin
if (!rst_n)
div_cnt<=5'd0;
else if(div_cnt==fenpin_cyc)
div_cnt<=5'd0;
el