A3P250 spi 从机 LED 控制逻辑
A3P250 spi 从机, 主机发送指令控制 LED , 0x55 关闭 LED, 0x AA 打开 LED;
module led( clk_40mhz, rst_n, led_1, spi_cs_n, spi_clk, spi_mosi, gpio_95, gpio_94, gpio_93 ); input clk_40mhz; // pin62 input rst_n; // pin64 output led_1; // pin13 output gpio_95; // pin95 output gpio_94; // pin94 output gpio_93; // pin93 // spi signal input spi_cs_n; // pin97 input spi_clk; // pin98 必须用 可以接入时钟的 引脚 input spi_mosi; // pin96 // 变量区 reg led_reg = 1'd0; reg [3:0] rx_cnt = 4'd0; reg [7:0] rx_data = 8'd0; // 接收数据控制逻辑 always @(posedge spi_clk or posedge spi_cs_n or negedge rst_n) begin if(!rst_n) begin rx_data <= 8'd0; end else if(!spi_cs_n) begin rx_data[rx_cnt] <= spi_mosi; end else begin rx_data <= 8'd0; end end // 接收计数 控制逻辑 always @(posedge spi_clk or posedge spi_cs_n or negedge rst_n) begin if(!rst_n) begin rx_cnt <= 4'd7; end else if(!spi_cs_n) begin rx_cnt <= rx_cnt - 4'd1; end else begin rx_cnt <= 4'd7; end end // led 控制逻辑 always @(posedge clk_40mhz or negedge rst_n) begin if(!rst_n) begin led_reg <= 1'd0; end else begin if(rx_data==8'h55) begin led_reg <= 1'd1; // 接收到主机发来的数据 0x55 关闭 LED1 end else if(rx_data == 8'hAA) begin led_reg <= 1'd0; // 接收到主机发来的数据 0xAA 关闭 LED1 end end end assign led_1 = led_reg; // 输出信号观察 assign gpio_95 = spi_cs_n; assign gpio_94 = spi_clk; assign gpio_93 = spi_mosi; endmodule
浙公网安备 33010602011771号