FPGA/DSP/ARM各所所长,在日常项目中,由于设计成本、性能等多方面因素的影响,经常会遇到多种编程芯片出现在同一项目中,此时不同编程芯片之间指令与信息的交互就显得非常重要。
FPGA与DSP的通信方式
DSP的EMIF(External Memory Interface)接口可以访问多种外部存储器,如SRAM、ROM、FLASH等。EMIF接口也是DSP与FPGA进行数据传输方式的最佳选择。
- EMIF通信接口
- EMIF通信Verilog设计
本设计中出于节省IO口,将读写使能信号用bus_we信号表示[1:读;0:写]。//检测 读写控制信号 && 片选信号 reg [1:0] bus_we_r ; reg [1:0] bus_cs_r ; always @(posedge clk_in or negedge rst_n_in) begin if(!rst_n_in) begin bus_we_r <= 2'b00; bus_cs_r <= 2'b00; end else begin bus_we_r[0] <= bus_we; bus_we_r[1] <= bus_we_r[0]; bus_cs_r[0] <= bus_cs; bus_cs_r[1] <= bus_cs_r[0]; end end assign bus_we_state = bus_we_r[1] & bus_we_r[0]; //读写控制信号状态 assign bus_cs_state = bus_cs_r[1] & bus_cs_r[0]; //片选信号状态 assign bus_we_pos = (~bus_we_r[1]) & bus_we_r[0] ; //读写控制信号上升沿 assign bus_we_neg = bus_we_r[1] & (~bus_we_r[0]) ; //读写控制信号下降沿
//写入数据使能信号 output_en always @(posedge clk_in or negedge rst_n_in) begin if(!rst_n_in) output_en <= 1'b0; else if((~bus_cs_state) && (bus_we_neg)) output_en <= 1'b1; else if(bus_cs_state) output_en <= 1'b0; end //双向8位通信线三状态设置 reg output_en; reg [ 7:0] output_bus_data; wire [ 7:0] input_bus_data; assign input_bus_data = bus_data; assign bus_data = output_en? output_bus_data: 8'bz;
//读取数据 always @(posedge clk_in or negedge rst_n_in) begin if(!rst_n_in) pulse_num <= 0; else if((~bus_cs_state) && (bus_we_pos)) begin case(bus_address) 5'd17: pulse_num[15:8] <= input_bus_data; default: ; endcase end end
//写入数据 always @(posedge clk_in or negedge rst_n_in) begin if(!rst_n_in) output_bus_data <= 1'b0; else if((~bus_cs_state) && (bus_we_neg)) begin case(bus_address) 'd12: output_bus_data <= rx_data[7:0]; //ABS0 'd13: output_bus_data <= rx_data[15:8]; //ABS1 'd14: output_bus_data <= rx_data[23:16]; //ABS2 'd15: output_bus_data <= rx_data[63:56]; //ALM 'd16: output_bus_data <= time_interval; //time interval 'd27: output_bus_data <= rx_data[39:32]; //ABM0 'd28: output_bus_data <= rx_data[47:40]; //ABM1 'd29: output_bus_data <= rx_data[55:48]; //ABM2 'd30: output_bus_data <= rx_data[63:56]; //ALM 'd31: output_bus_data <= 8'h10; //version V1.0 default: ; endcase end end
FPGA与ARM的通信方式
未完待续