请搞过PCI9054的朋友进来看看

2020-02-28 18:25发布

最近在看PCI这块,用的是PCI9054+FPGA  的例程,有段代码看的有问题:与手册上给的时序匹配不起来(BLAST 和 ADS信号):把代码贴出来
这段代码 是实现了上位机控制4个LED的例子,地址是14‘b1 的时候 读入主机发过来的数据线上的数据,判断哪个灯亮。用的应该是C模式 : PCI target Single Write  
module WITH_PCI_LED_RUN(
      clkin,
      lrst,ld,ads,lwr,ready,blast,lhold,lholda,la,ccs,bterm,
      led
      );
      
input    clkin;
input   lrst,ads,lwr,blast,lhold;
input [13:0] la;
output   ready,lholda,ccs,bterm;
input [31:0] ld;
output  [3:0]  led;

reg  [3:0]  led;
reg  [24:0] count;
reg  [1:0]  state;
wire    clk;
reg    lholda;
wire   ready,ccs,bterm;

reg    readyflag;
reg  [7:0] LEDByControl;
//--计数分频-------------------------------------
always @ (posedge clkin)
count <= count+1;
assign clk = count[24];
//--LED控制--------------------------------
always @ (posedge clk)
begin
  case(LEDByControl)
   8'd1: led <= 4'b0001;
   8'd2: led <= 4'b0010;
   8'd3: led <= 4'b0100;
   8'd4: led <= 4'b1000;
   8'd5: case(state)
      2'b00: led <= 4'b0001;
      2'b01: led <= 4'b0010;
      2'b10: led <= 4'b0100;
      2'b11: led <= 4'b1000;
     endcase
   default:led <= 4'b0000;
  endcase  
end

always @ (posedge clk)
state <= state+1;

//--PCI本地控制器-------------------------------
always @(posedge clkin)
lholda <= lhold;           

always @(posedge clkin or negedge lrst)
begin
  if(!lrst)
   begin
    readyflag <= 1'b0;
    LEDByControl[7:0] <= 8'b0;
   end
  else if(!ads & lwr & blast & la[13:0] == 14'b1)
   begin
    readyflag <= 1'b1;
   end
  else if(ads & lwr & blast & readyflag == 1'b1 & la[13:0] == 14'b1)
   begin
    readyflag <= 1'b1;
   end
  else if(ads & lwr & !blast & readyflag == 1'b1 & la[13:0] == 14'b1)
   begin
    LEDByControl[7:0] <= ld[31:24];
    readyflag <= 1'b0;
   end
  else
   begin
    LEDByControl[7:0] <= LEDByControl[7:0];
    readyflag <= 1'b0;
   end
end
//-----------------------------------------------------
assign    ccs = 1'b1;
assign    bterm = 1'b1;
assign    ready = 1'b0;

endmodule


3.jpg

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
drentsi
1楼-- · 2020-02-28 21:48
及早放弃PCI是正道
cuianbin
2楼-- · 2020-02-29 01:17
drentsi 发表于 2013-4-22 19:06
及早放弃PCI是正道

为啥这样说?
nbaibai
3楼-- · 2020-02-29 04:41
金手指可靠性太差了,速率也不占优势!
afei8856
4楼-- · 2020-02-29 07:19
 精彩回答 2  元偷偷看……
yghanwuji
5楼-- · 2020-02-29 09:14
ads有效,表明下一个时钟的地址有效,blast有效表明这是这次传输的最后一个数据,每一个数据对应一个ready。
GoldSunMonkey
6楼-- · 2020-02-29 10:51
没搞过,帮顶

一周热门 更多>