yuloong 发表于 2016-1-19 20:00:45

cy7c68013a固件程序与FPGA程序的烧写顺序

设计了一快cy7c68013a与FPGA通信的电路,当先烧写cy7c68013a的固件程序,再烧写FPGA程序时,两者之间可以实现通信;但是先烧写FPGA程序,在烧写cy7c68013a的固件程,则不能通信,
请问,哪位大侠遇到这种现象,造成这种现象的原因是什么?

jjl3 发表于 2016-1-19 20:06:15

没有reset信号,时序乱了

yuloong 发表于 2016-1-19 20:51:04

jjl3 发表于 2016-1-19 20:06
没有reset信号,时序乱了

module Test_USB2 (
input                  clk,
input                  reset,
inputwire            i_u_flaga,      //EP2 empty flag
inputwire            i_u_flagd,      //EP6 full flag
inputwire            i_u_flagc,

output reg             o_u_slwr,      //u_slwr#
output reg             o_u_slrd,      //u_slrd#
output reg             o_u_sloe,      //u_sloe#
output wire            o_u_ifclk,
output wire       o_u_addr,
output reg   o_data_out

);

reg                  STATE;
reg   count;
wire clk_24M;
wire clk_12M;
wire clk_4M;
wire clk_48M;

parameter IDLE = 2'h0;                  
parameter WRITE_LOW16 = 2'h1;
parameter WRITE_HIGH_16 = 2'h2;

pll        pll_inst (
        .inclk0 ( clk ),            //clk_24M
        .c0 ( clk_24M ),            //clk_24M
        .c1 ( clk_12M ),            //clk_12M
        .c2 ( clk_4M )        ,               //clk_4M
        .c3 ( clk_48M )
);

assign o_u_addr = 2'b10;                              //选择FIFO端点6
assign o_u_ifclk = clk_48M;

// 数据源,用于验证USB与fpga通信       
always@(posedge clk_48M or negedge reset)
begin       
        if(!reset)
          count <= 16'h0;
        else
          count <= count+1;
end

// USB控制信号       
always@(posedge o_u_ifclk or negedge reset)
begin
        if(!reset)
        begin
                o_data_out<=16'b0;
                o_u_slwr<= 1'b1;
                o_u_slrd<= 1'b1;
                o_u_sloe<= 1'b1;       
        end
        else if(i_u_flagd== 1'b1)
        begin
                o_u_slwr<= 1'b0;
                o_data_out<= count;
        end
        else
           o_u_slwr <= 1'b1;
end


endmodule



上述是我的代码,复位已加!

lzl000 发表于 2016-1-19 21:04:52

看看版规,下个id见
页: [1]
查看完整版本: cy7c68013a固件程序与FPGA程序的烧写顺序