微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > MCU总线到WishBone的转接

MCU总线到WishBone的转接

时间:10-02 整理:3721RD 点击:

欢迎讨论!
下面的 信号
  wbm16_cyc_o,
  wbm16_stb_o,
  wbm16_ack_i,处理是否正确?
/**
*/
module par16_bridge(
  wb_clk_i,
  wb_rst_i,
// MCU Bus Signals
  mcu_adr_pad,
  mcu_dat_pad,
  mcu_xrd_pad,
  mcu_xwe_pad,
  mcu_xrw_pad,
  mcu_xcs_pad,
// Wishbone Master Signals
  wbm16_adr_o,
  wbm16_dat_o,
  wbm16_dat_i,
  wbm16_cyc_o,
  wbm16_stb_o,
  wbm16_we_o,
  wbm16_ack_i,
  wbm16_sel_o
);
input wb_clk_i, wb_rst_i;
input [15:0] mcu_adr_pad;
inout [15:0] mcu_dat_pad;
input mcu_xrd_pad, mcu_xwe_pad;
input mcu_xrw_pad, mcu_xcs_pad;
output [15:0] wbm16_adr_o;
output [3:0] wbm16_sel_o;
input [15:0] wbm16_dat_i;
output [15:0] wbm16_dat_o;
output wbm16_cyc_o, wbm16_stb_o, wbm16_we_o;
input wbm16_ack_i;
reg [15:0] datlatch;
reg wb16_ack_o, wbm16_cyc_o, wbm16_stb_o;
/**********************************************************************************/
assign wbm16_adr_o = mcu_adr_pad;
assign wbm16_sel_o = 4'b1111;
assign wbm16_we_o = !mcu_xrw_pad;
assign wbm16_cyc_o = !mcu_xcs_pad;
assign wbm16_stb_o = !mcu_xcs_pad;
always @(posedge wb_clk_i) begin
  if (!mcu_xcs_pad && !mcu_xrd_pad) begin
    wbm16_dat_o <= mcu_dat_pad;
    epwbm_stb_o <= 1'b1;
  end
  if (!mcu_xcs_pad && !mcu_xwe_pad)
    mcu_dat_pad <= wbm16_dat_i;
  else
    mcu_dat_pad <= 16'hzzzz;
  if (!mcu_xcs_pad && wbm16_ack_i)
    epwbm_stb_o <= 1'b0;
  end
end
/**********************************************************************************/
/**********************************************************************************/
endmodule

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top