关于AXI_Quad_SPI的寄存器配置

1.核初始化配置

首先是:

40:0000_000A

1C:8000_0000

28:0000_0004

2.命令与dummy_data

60:000001E6

60:00000186

68:{24'h000000,cmd}

68:{24'h000000,add0}

68:{24'h000000,add1}

68:{24'h000000,add2}

68:{24'h000000,data1}

68:{24'h000000,data2}

68:{24'h000000,data3}

68:{24'h000000,DUMMY_DATA}

68:{24'h000000,DUMMY_DATA}

68:{24'h000000,DUMMY_DATA}

68:{24'h000000,DUMMY_DATA}

68:{24'h000000,DUMMY_DATA}

68:{24'h000000,DUMMY_DATA}

68:{24'h000000,DUMMY_DATA}

68:{24'h000000,DUMMY_DATA}

70:00000000

60:00000086

20:00000004

70:FFFFFFFF

60:00000186

AXI_Quad_SPI核在使用中碰到的问题:

对IP核进行初始化后,执行的第一个命令无效,第二个命令才能正常执行,如果开机第一个命令需要执行写使能命令,即需要把写使能命令执行两边,第二个才生效,第三个,第四个...均能正常执行。这个问题与SPI的clk 调用了startup primitive这一源语有关。

  1. `timescale 1ns / 1ps
  2. //////////////////////////////////////////////////////////////////////////////////
  3. // Company:
  4. // Engineer: chensimin
  5. //
  6. // Create Date: 2018/02/01 10:32:30
  7. // Design Name:
  8. // Module Name: top
  9. // Project Name:
  10. // Target Devices:
  11. // Tool Versions:
  12. // Description:
  13. //
  14. // Dependencies:
  15. //
  16. // Revision:
  17. // Revision 0.01 - File Created
  18. // Additional Comments:
  19. //
  20. //////////////////////////////////////////////////////////////////////////////////
  21.  
  22. module top(
  23.  
  24. input clk_27m_in,
  25. inout [:]spi_dq,
  26. inout spi_ss
  27.  
  28. );
  29.  
  30. //--------------------------------------------------------------
  31. wire clk_100M;
  32. clk_wiz_0 U2(
  33. .clk_out1(clk_100M),
  34. .clk_in1(clk_27m_in)
  35. );
  36.  
  37. //--------------------------------------------------------------
  38. wire rst;
  39. //wire start_write;
  40. wire start_core_init;
  41. wire finish_core_init;
  42. wire start_core_write;
  43. wire wait_core_int;
  44. wire finish_core_write;
  45. wire start_read;
  46. wire [:]axi_araddr;
  47. wire core_init_en;
  48. wire core_write_en;
  49. wire [:]cmd;
  50. wire [:]add0;
  51. wire [:]add1;
  52. wire [:]add2;
  53. wire [:]data1;
  54. wire [:]data2;
  55. wire [:]data3;
  56. vio_0 U3 (
  57. .clk(clk_100M), // input wire clk
  58. .probe_out0(rst), // output wire [0 : 0] probe_out0
  59. .probe_out1(start_core_init), // output wire [0 : 0] probe_out1
  60. .probe_out2(start_read), // output wire [0 : 0] probe_out2
  61. .probe_out3(axi_araddr), // output wire [31 : 0] probe_out3
  62. .probe_out4(core_init_en), // output wire [0 : 0] probe_out4
  63. .probe_out5(core_write_en), // output wire [0 : 0] probe_out5
  64. .probe_out6(cmd), // output wire [7 : 0] probe_out6
  65. .probe_out7(add0), // output wire [7 : 0] probe_out7
  66. .probe_out8(add1), // output wire [7 : 0] probe_out8
  67. .probe_out9(add2), // output wire [7 : 0] probe_out9
  68. .probe_out10(data1), // output wire [7 : 0] probe_out10
  69. .probe_out11(data2), // output wire [7 : 0] probe_out11
  70. .probe_out12(data3), // output wire [7 : 0] probe_out12
  71. .probe_out13(finish_core_init), // output wire [0 : 0] probe_out13
  72. .probe_out14(start_core_write), // output wire [0 : 0] probe_out14
  73. .probe_out15(wait_core_int), // output wire [0 : 0] probe_out15
  74. .probe_out16(finish_core_write) // output wire [0 : 0] probe_out16
  75. );
  76.  
  77. //--------------------------------------------------------------
  78. ila_0 U4 (
  79. .clk(clk_100M), // input wire clk
  80. .probe0(start_write_rise), // input wire [0:0] probe0
  81. .probe1(start_read_rise), // input wire [0:0] probe1
  82. .probe2(m_axi_awvalid), // input wire [0:0] probe2
  83. .probe3(m_axi_wvalid), // input wire [0:0] probe3
  84. .probe4(m_axi_arvalid), // input wire [0:0] probe4
  85. .probe5(m_axi_rready), // input wire [0:0] probe5
  86. .probe6(m_axi_bready), // input wire [0:0] probe6
  87. .probe7(s_axi_awready), // input wire [0:0] probe7
  88. .probe8(s_axi_arready), // input wire [0:0] probe8
  89. .probe9(s_axi_wready), // input wire [0:0] probe9
  90. .probe10(s_axi_rvalid), // input wire [0:0] probe10
  91. .probe11(s_axi_bvalid), // input wire [0:0] probe11
  92. .probe12(io0_i), // input wire [0:0] probe12
  93. .probe13(io0_o), // input wire [0:0] probe13
  94. .probe14(io0_t), // input wire [0:0] probe14
  95. .probe15(io1_i), // input wire [0:0] probe15
  96. .probe16(io1_o), // input wire [0:0] probe16
  97. .probe17(io1_t), // input wire [0:0] probe17
  98. .probe18(io2_i), // input wire [0:0] probe18
  99. .probe19(io2_o), // input wire [0:0] probe19
  100. .probe20(io2_t), // input wire [0:0] probe20
  101. .probe21(io3_i), // input wire [0:0] probe21
  102. .probe22(io3_o), // input wire [0:0] probe22
  103. .probe23(io3_t), // input wire [0:0] probe23
  104. .probe24(ss_i), // input wire [0:0] probe24
  105. .probe25(ss_o), // input wire [0:0] probe25
  106. .probe26(ss_t), // input wire [0:0] probe26
  107. .probe27(m_axi_awaddr), // input wire [6:0] probe27
  108. .probe28(m_axi_araddr), // input wire [6:0] probe28
  109. .probe29(current_state), // input wire [6:0] probe29
  110. .probe30(core_init_cnt), // input wire [6:0] probe30
  111. .probe31(m_axi_wdata), // input wire [31:0] probe31
  112. .probe32(m_axi_rdata), // input wire [31:0] probe32
  113. .probe33(s_axi_rdata), // input wire [31:0] probe33
  114. .probe34(core_write_cnt), // input wire [6:0] probe34
  115. .probe35(axi_awaddr), // input wire [6:0] probe35
  116. .probe36(next_state), // input wire [6:0] probe36
  117. .probe37(axi_wdata) // input wire [31:0] probe37
  118. );
  119.  
  120. //--------------------------------------------------------------
  121. reg start_write;
  122. always @(posedge clk_100M or posedge rst)
  123. begin
  124. if(rst)
  125. start_write <= 'b0;
  126.  
  127. else if (current_state == && core_init_en)
  128. begin
  129. if(core_init_cnt == )
  130. begin
  131. if(start_core_init_rise)
  132. start_write <= 'b1;
  133. else
  134. start_write <= 'b0;
  135. end
  136.  
  137. else if(core_init_cnt == )
  138. begin
  139. if(finish_core_init_rise)
  140. start_write <= 'b1;
  141. else
  142. start_write <= 'b0;
  143. end
  144.  
  145. else
  146. start_write <= 'b1;
  147. end
  148.  
  149. else if(current_state == && core_write_en)
  150. begin
  151. if(core_write_cnt == )
  152. begin
  153. if(start_core_write_rise)
  154. start_write <= 'b1;
  155. else
  156. start_write <= 'b0;
  157. end
  158.  
  159. else if(core_write_cnt == )
  160. begin
  161. if(wait_core_int_rise)
  162. start_write <= 'b1;
  163. else
  164. start_write <= 'b0;
  165. end
  166.  
  167. else if(core_write_cnt == )
  168. if(finish_core_write_rise)
  169. start_write <= 'b1;
  170. else
  171. start_write <= 'b0;
  172.  
  173. else
  174. start_write <= 'b1;
  175. end
  176.  
  177. else
  178. start_write <= 'b0;
  179. end
  180.  
  181. //--------------------------------------------------------------
  182. reg start_write_delay;
  183. wire start_write_rise;
  184.  
  185. reg start_read_delay;
  186. wire start_read_rise;
  187.  
  188. reg start_core_init_delay;
  189. wire start_core_init_rise;
  190.  
  191. reg finish_core_init_delay;
  192. wire finish_core_init_rise;
  193.  
  194. reg start_core_write_delay;
  195. wire start_core_write_rise;
  196.  
  197. reg wait_core_int_delay;
  198. wire wait_core_int_rise;
  199.  
  200. reg finish_core_write_delay;
  201. wire finish_core_write_rise;
  202.  
  203. always @(posedge clk_100M or posedge rst)
  204. begin
  205. if (rst)
  206. begin
  207. start_write_delay <= 'b0;
  208. start_read_delay <= 'b0;
  209. start_core_init_delay <= 'b0;
  210. finish_core_init_delay <= 'b0;
  211. start_core_write_delay <= 'b0;
  212. wait_core_int_delay <= 'b0;
  213. finish_core_write_delay <= 'b0;
  214.  
  215. end
  216. else
  217. begin
  218. start_write_delay <= start_write;
  219. start_read_delay <= start_read;
  220. start_core_init_delay <= start_core_init;
  221. finish_core_init_delay <= finish_core_init;
  222. start_core_write_delay <= start_core_write;
  223. wait_core_int_delay <= wait_core_int;
  224. finish_core_write_delay <= finish_core_write;
  225.  
  226. end
  227. end
  228.  
  229. assign start_write_rise = !start_write_delay && start_write;
  230. assign start_read_rise = !start_read_delay && start_read;
  231. assign start_core_init_rise = !start_core_init_delay && start_core_init;
  232. assign finish_core_init_rise = !finish_core_init_delay && finish_core_init;
  233. assign start_core_write_rise = !start_core_write_delay && start_core_write;
  234. assign wait_core_int_rise = !wait_core_int_delay && wait_core_int;
  235. assign finish_core_write_rise = !finish_core_write_delay && finish_core_write;
  236.  
  237. //--------------------------------------------------------------
  238.  
  239. parameter DUMMY_DATA = 'hFF;
  240. reg [:]axi_awaddr;
  241. reg [:]axi_wdata;
  242.  
  243. reg [:]core_init_cnt;
  244. reg [:]core_write_cnt;
  245. always @(posedge clk_100M or posedge rst)
  246. begin
  247. if (rst)
  248. begin
  249. core_init_cnt <= ;
  250. core_write_cnt <= ;
  251. end
  252. else if (current_state == && core_init_en)
  253. begin
  254. case(core_init_cnt)
  255.  
  256. :
  257. begin
  258. axi_awaddr <= 'h40;
  259. axi_wdata <= 'h0000000A;
  260. end
  261.  
  262. :
  263. begin
  264. axi_awaddr <= 'h1C;
  265. axi_wdata <= 'h80000000;
  266. end
  267.  
  268. :
  269. begin
  270. axi_awaddr <= 'h28;
  271. axi_wdata <= 'h00000004;
  272. end
  273.  
  274. default:
  275. begin
  276. axi_awaddr <= 'h00;
  277. axi_wdata <= 'h00000000;
  278. end
  279.  
  280. endcase
  281.  
  282. end
  283.  
  284. else if(current_state == && core_init_en)
  285. begin
  286. if(core_init_cnt < )
  287. core_init_cnt <= core_init_cnt + 'b1;
  288. else
  289. core_init_cnt <= ;
  290. end
  291.  
  292. else if(current_state == && core_write_en)
  293. begin
  294. case(core_write_cnt)
  295. /*
  296. 0:
  297. begin
  298. axi_awaddr <= 7'h70;
  299. axi_wdata <= 32'hFFFFFFFF;
  300. end
  301. */
  302. :
  303. begin
  304. axi_awaddr <= 'h60;
  305. axi_wdata <= 'h000001E6;
  306. end
  307.  
  308. :
  309. begin
  310. axi_awaddr <= 'h60;
  311. axi_wdata <= 'h00000186;
  312. end
  313.  
  314. :
  315. begin
  316. axi_awaddr <= 'h68;
  317. axi_wdata <= {'h000000,cmd};
  318. end
  319.  
  320. :
  321. begin
  322. axi_awaddr <= 'h68;
  323. axi_wdata <= {'h000000,add0};
  324. end
  325.  
  326. :
  327. begin
  328. axi_awaddr <= 'h68;
  329. axi_wdata <= {'h000000,add1};
  330. end
  331.  
  332. :
  333. begin
  334. axi_awaddr <= 'h68;
  335. axi_wdata <= {'h000000,add2};
  336. end
  337.  
  338. :
  339. begin
  340. axi_awaddr <= 'h68;
  341. axi_wdata <= {'h000000,data1};
  342. end
  343.  
  344. :
  345. begin
  346. axi_awaddr <= 'h68;
  347. axi_wdata <= {'h000000,data2};
  348. end
  349.  
  350. :
  351. begin
  352. axi_awaddr <= 'h68;
  353. axi_wdata <= {'h000000,data3};
  354. end
  355.  
  356. :
  357. begin
  358. axi_awaddr <= 'h68;
  359. axi_wdata <= {'h000000,DUMMY_DATA};
  360. end
  361.  
  362. :
  363. begin
  364. axi_awaddr <= 'h68;
  365. axi_wdata <= {'h000000,DUMMY_DATA};
  366. end
  367.  
  368. :
  369. begin
  370. axi_awaddr <= 'h68;
  371. axi_wdata <= {'h000000,DUMMY_DATA};
  372. end
  373.  
  374. :
  375. begin
  376. axi_awaddr <= 'h68;
  377. axi_wdata <= {'h000000,DUMMY_DATA};
  378. end
  379.  
  380. :
  381. begin
  382. axi_awaddr <= 'h68;
  383. axi_wdata <= {'h000000,DUMMY_DATA};
  384. end
  385.  
  386. :
  387. begin
  388. axi_awaddr <= 'h68;
  389. axi_wdata <= {'h000000,DUMMY_DATA};
  390. end
  391.  
  392. :
  393. begin
  394. axi_awaddr <= 'h68;
  395. axi_wdata <= {'h000000,DUMMY_DATA};
  396. end
  397.  
  398. :
  399. begin
  400. axi_awaddr <= 'h68;
  401. axi_wdata <= {'h000000,DUMMY_DATA};
  402. end
  403.  
  404. :
  405. begin
  406. axi_awaddr <= 'h70;
  407. axi_wdata <= 'h00000000;
  408. end
  409.  
  410. :
  411. begin
  412. axi_awaddr <= 'h60;
  413. axi_wdata <= 'h00000086;
  414. end
  415.  
  416. :
  417. begin
  418. axi_awaddr <= 'h20;
  419. axi_wdata <= 'h00000004;
  420. end
  421.  
  422. :
  423. begin
  424. axi_awaddr <= 'h70;
  425. axi_wdata <= 'hFFFFFFFF;
  426. end
  427.  
  428. :
  429. begin
  430. axi_awaddr <= 'h60;
  431. axi_wdata <= 'h00000186;
  432. end
  433.  
  434. default:
  435. begin
  436. axi_awaddr <= 'h00;
  437. axi_wdata <= 'h00000000;
  438. end
  439.  
  440. endcase
  441. end
  442.  
  443. else if(current_state == && core_write_en)
  444. begin
  445. if(core_write_cnt < )
  446. core_write_cnt <= core_write_cnt + 'b1;
  447. else
  448. core_write_cnt <= ;
  449. end
  450.  
  451. end
  452.  
  453. //--------------------------------------------------------------
  454. reg [:]current_state;
  455. reg [:]next_state;
  456. always @ (posedge clk_100M or posedge rst)
  457. begin
  458. if(rst)
  459. current_state <= IDLE;
  460. else
  461. current_state <= next_state;
  462. end
  463.  
  464. //--------------------------------------------------------------
  465. parameter [:] IDLE = 'd0 ,
  466. WRITE_START = 'd1 ,
  467. WRITE_VALID = 'd2 ,
  468. WRITE_READY = 'd3 ,
  469. WRITE_BREADY = 'd4 ,
  470. WRITE_END = 'd5 ,
  471. READ_START = 'd11 ,
  472. READ_VALID = 'd12 ,
  473. READ_READY = 'd13 ,
  474. READ_FINISH = 'd14 ,
  475. READ_END = 'd15 ;
  476.  
  477. always @ (*)
  478. begin
  479. next_state = IDLE;
  480. case(current_state)
  481. IDLE:
  482. begin
  483. if(start_write_rise)
  484. next_state = WRITE_START;
  485. else if(start_read_rise)
  486. next_state = READ_START;
  487. else
  488. next_state = IDLE;
  489. end
  490.  
  491. WRITE_START:
  492. begin
  493. next_state = WRITE_VALID;
  494. end
  495.  
  496. WRITE_VALID:
  497. begin
  498. if(s_axi_awready && s_axi_wready)
  499. next_state = WRITE_READY;
  500. else
  501. next_state = WRITE_VALID;
  502. end
  503.  
  504. WRITE_READY:
  505. begin
  506. if(s_axi_bvalid)
  507. next_state = WRITE_BREADY;
  508. else
  509. next_state = WRITE_READY;
  510. end
  511.  
  512. WRITE_BREADY:
  513. begin
  514. next_state = WRITE_END;
  515. end
  516.  
  517. WRITE_END:
  518. begin
  519. next_state = IDLE;
  520. end
  521.  
  522. READ_START:
  523. begin
  524. next_state = READ_VALID;
  525. end
  526.  
  527. READ_VALID:
  528. begin
  529. if(s_axi_arready)
  530. next_state = READ_READY;
  531. else
  532. next_state = READ_VALID;
  533. end
  534.  
  535. READ_READY:
  536. begin
  537. if(s_axi_rvalid)
  538. next_state = READ_FINISH;
  539. else
  540. next_state = READ_READY;
  541. end
  542.  
  543. READ_FINISH:
  544. begin
  545. next_state = READ_END;
  546. end
  547.  
  548. READ_END:
  549. begin
  550. next_state = IDLE;
  551. end
  552.  
  553. endcase
  554. end
  555.  
  556. //-------------------------------------------------------------
  557. reg m_axi_awvalid;
  558. reg m_axi_wvalid;
  559. reg m_axi_arvalid;
  560.  
  561. reg m_axi_rready;
  562. reg m_axi_bready;
  563.  
  564. reg [:]m_axi_awaddr;
  565. reg [:]m_axi_araddr;
  566.  
  567. reg [:]m_axi_wdata;
  568. reg [:]m_axi_rdata;
  569.  
  570. always @(posedge clk_100M or posedge rst)
  571. begin
  572. if (rst)
  573. begin
  574. m_axi_awvalid <= 'b0;
  575. m_axi_wvalid <= 'b0;
  576. m_axi_arvalid <= 'b0;
  577. m_axi_rready <= 'b0;
  578. m_axi_bready <= 'b0;
  579. m_axi_awaddr <= ;
  580. m_axi_araddr <= ;
  581. m_axi_wdata <= ;
  582. m_axi_rdata <= ;
  583. end
  584. else
  585. begin
  586.  
  587. m_axi_awvalid <= 'b0;
  588. m_axi_wvalid <= 'b0;
  589. m_axi_arvalid <= 'b0;
  590. m_axi_rready <= 'b0;
  591. m_axi_bready <= 'b0;
  592.  
  593. case(current_state)
  594. //IDLE:
  595.  
  596. WRITE_START:
  597. begin
  598. m_axi_awaddr <= axi_awaddr;
  599. m_axi_wdata <= axi_wdata;
  600. m_axi_awvalid <= 'b1;
  601. m_axi_wvalid <= 'b1;
  602. m_axi_bready <= 'b1;
  603. end
  604.  
  605. WRITE_VALID:
  606. begin
  607. m_axi_awvalid <= 'b1;
  608. m_axi_wvalid <= 'b1;
  609. m_axi_bready <= 'b1;
  610. end
  611.  
  612. WRITE_READY:
  613. begin
  614. m_axi_bready <= 'b1;
  615. end
  616.  
  617. //WRITE_BREADY:
  618. //WRITE_END:
  619.  
  620. READ_START:
  621. begin
  622. m_axi_araddr <= axi_araddr;
  623. m_axi_arvalid <= 'b1;
  624. end
  625.  
  626. READ_VALID:
  627. begin
  628. m_axi_arvalid <= 'b1;
  629. end
  630.  
  631. //READ_READY:
  632.  
  633. READ_FINISH:
  634. begin
  635. m_axi_rdata <= s_axi_rdata;
  636. m_axi_rready <= 'b1;
  637. end
  638.  
  639. //READ_END:
  640.  
  641. default:
  642. begin
  643. m_axi_awvalid <= 'b0;
  644. m_axi_wvalid <= 'b0;
  645. m_axi_arvalid <= 'b0;
  646. m_axi_rready <= 'b0;
  647. m_axi_bready <= 'b0;
  648. end
  649.  
  650. endcase
  651.  
  652. end
  653. end
  654.  
  655. //-------------------------------------------------------------
  656. wire s_axi_awready;
  657. wire s_axi_arready;
  658. wire s_axi_wready;
  659. wire s_axi_rvalid;
  660. wire s_axi_bvalid;
  661. wire [:]s_axi_rdata;
  662.  
  663. wire io0_i;
  664. wire io0_o;
  665. wire io0_t;
  666. wire io1_i;
  667. wire io1_o;
  668. wire io1_t;
  669. wire io2_i;
  670. wire io2_o;
  671. wire io2_t;
  672. wire io3_i;
  673. wire io3_o;
  674. wire io3_t;
  675. wire ss_i;
  676. wire ss_o;
  677. wire ss_t;
  678.  
  679. axi_quad_spi_0 U1 (
  680. .ext_spi_clk(clk_100M), // input wire ext_spi_clk
  681. .s_axi_aclk(clk_100M), // input wire s_axi_aclk
  682. .s_axi_aresetn(~rst), // input wire s_axi_aresetn
  683. .s_axi_awaddr(m_axi_awaddr), // input wire [6 : 0] s_axi_awaddr
  684. .s_axi_awvalid(m_axi_awvalid), // input wire s_axi_awvalid
  685. .s_axi_awready(s_axi_awready), // output wire s_axi_awready
  686. .s_axi_wdata(m_axi_wdata), // input wire [31 : 0] s_axi_wdata
  687. .s_axi_wstrb('b1111), // input wire [3 : 0] s_axi_wstrb
  688. .s_axi_wvalid(m_axi_wvalid), // input wire s_axi_wvalid
  689. .s_axi_wready(s_axi_wready), // output wire s_axi_wready
  690. .s_axi_bresp(), // output wire [1 : 0] s_axi_bresp
  691. .s_axi_bvalid(s_axi_bvalid), // output wire s_axi_bvalid
  692. .s_axi_bready(m_axi_bready), // input wire s_axi_bready
  693. .s_axi_araddr(m_axi_araddr), // input wire [6 : 0] s_axi_araddr
  694. .s_axi_arvalid(m_axi_arvalid), // input wire s_axi_arvalid
  695. .s_axi_arready(s_axi_arready), // output wire s_axi_arready
  696. .s_axi_rdata(s_axi_rdata), // output wire [31 : 0] s_axi_rdata
  697. .s_axi_rresp(), // output wire [1 : 0] s_axi_rresp
  698. .s_axi_rvalid(s_axi_rvalid), // output wire s_axi_rvalid
  699. .s_axi_rready(m_axi_rready), // input wire s_axi_rready
  700. .io0_i(io0_i), // input wire io0_i
  701. .io0_o(io0_o), // output wire io0_o
  702. .io0_t(io0_t), // output wire io0_t
  703. .io1_i(io1_i), // input wire io1_i
  704. .io1_o(io1_o), // output wire io1_o
  705. .io1_t(io1_t), // output wire io1_t
  706. .io2_i(io2_i), // input wire io2_i
  707. .io2_o(io2_o), // output wire io2_o
  708. .io2_t(io2_t), // output wire io2_t
  709. .io3_i(io3_i), // input wire io3_i
  710. .io3_o(io3_o), // output wire io3_o
  711. .io3_t(io3_t), // output wire io3_t
  712. .ss_i(ss_i), // input wire [0 : 0] ss_i
  713. .ss_o(ss_o), // output wire [0 : 0] ss_o
  714. .ss_t(ss_t), // output wire ss_t
  715. .cfgclk(cfgclk), // output wire cfgclk
  716. .cfgmclk(cfgmclk), // output wire cfgmclk
  717. .eos(eos), // output wire eos
  718. .preq(preq), // output wire preq
  719. .ip2intc_irpt(ip2intc_irpt) // output wire ip2intc_irpt
  720. );
  721.  
  722. IOBUF dq0(
  723. .IO (spi_dq[]),
  724. .O (io0_i),
  725. .I (io0_o),
  726. .T (io0_t)
  727. );
  728.  
  729. IOBUF dq1(
  730. .IO (spi_dq[]),
  731. .O (io1_i),
  732. .I (io1_o),
  733. .T (io1_t)
  734. );
  735.  
  736. IOBUF dq2(
  737. .IO (spi_dq[]),
  738. .O (io2_i),
  739. .I (io2_o),
  740. .T (io2_t)
  741. );
  742.  
  743. IOBUF dq3(
  744. .IO (spi_dq[]),
  745. .O (io3_i),
  746. .I (io3_o),
  747. .T (io3_t)
  748. );
  749.  
  750. IOBUF spiss(
  751. .IO (spi_ss),
  752. .O (ss_i),
  753. .I (ss_o),
  754. .T (ss_t)
  755. );
  756.  
  757. endmodule

关于AXI_Quad_SPI的寄存器配置的更多相关文章

  1. ili9325--LCD寄存器配置研究

    2011-06-22 22:18:12 自己根据ili9325的规格书编写驱动.发现LCD屏没显示.于是怀疑是某些寄存器设置错误.要调试的话最好还是先熟悉寄存器的作用,调试的时候只要看到现象就能分析了 ...

  2. STM8串口初始化寄存器配置

    //库函数配置 UART1_DeInit(); UART1_Init((u32)1000000, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, \ UART1_PARI ...

  3. 摄像头驱动OV7725学习笔记连载(二):0V7725 SCCB时序的实现之寄存器配置

    上一篇博客主要介绍了OV7725的电气特性以及SCCB接口的时序和输出一帧图像的时序图以及数据的拼接.输出一帧图像与输出时钟PCLK有关. 上图是OV7725实现的整体框架,有点丑.FPGA描述SCC ...

  4. stm8s + si4463 寄存器配置

    /***********************************************函 数: main功 能: 程序入口输 入: /输 出: /描 述: /**************** ...

  5. 与或左移右移操作在ARM寄存器配置中的作用

    逻辑运算: 与运算&:与0清零  清零用与运算 或运算 |:或1置一  置一用或运算 异或 ^:不同为1  /*****单个寄存器清零置一*************************** ...

  6. STM32的操作过程,寄存器配置与调试过程(转载)

    很多学习stm32的,为什么学习stm32他也不知道,我们所知道的就是各个论坛讨论stm32的很多,而我们很多人之所以学习stm32是很多的淘宝卖家做了大量的图片文字宣传,于是我们经不住诱惑就买了板子 ...

  7. AD9361寄存器配置顺序,循环模式,自收自发

    :] cmd_data; :] index; begin case(index) 'h000,8'h00};//set spi -- 'h3df,8'h01};//set init -- 'h037, ...

  8. USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

    其实之前也有提及过,Cypress公司提供的官方文件和应用手册真的可以解决很多问题.做的也很人性化,操作也及其简单,几乎只要在 TD_int()里面配置一些常用的参数即可,其他都可以不用操作. 作为一 ...

  9. DSP EPWM学习笔记2 - EPWM相关寄存器设置问题解析

    DSP EPWM学习笔记2 - EPWM相关寄存器设置问题解析 彭会锋 本篇主要针对不太熟悉的TZ 故障捕获 和 DB 死区产生两个子模块进行学习研究 感觉TI的寄存器命名还是有一定规律可循的 SEL ...

随机推荐

  1. python day05 作业答案

    1. b.不可以 c.tu=("alex",[11,22,{"k1":"v1","k2":["age" ...

  2. Ubuntu 16.04安装vsftpd 并开启ftp服务

    1. 安装 sudo apt-get install vsftpd 2.可以使用下列命令来打开,关闭,重启ftp服务 sudo /etc/init.d/vsftpd start sudo /etc/i ...

  3. HDU 1166 敌兵布阵(线段树点更新区间求和裸题)

    Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任 ...

  4. Symbol -- JavaScript 语言的第七种数据类型

    ES5 的对象属性名都是字符串,这容易造成属性名的冲突.比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突.如果有一种机制,保证 ...

  5. linux测试系统使用expdp迁移数据到windos系统,11.2.0.4版本测试

    测试,使用linux 系统,迁移至windos测试系统,迁移用户scott 1.源端导出(linux) 2.传输 3.目标端导入(windows) 1.源端导出,本次使用expdp 1)创建操作系统转 ...

  6. xdoj-1324 (区间离散化-线段树求区间最值)

    思想 : 1 优化:题意是覆盖点,将区间看成 (l,r)转化为( l-1,r) 覆盖区间 2 核心:dp[i]  覆盖从1到i区间的最小花费 dp[a[i].r]=min (dp[k])+a[i]s; ...

  7. 限定某个目录禁止解析php 、限制user_agent 、php的配制文件、PHP的动态扩展模块

    1. 限定某个目录禁止解析php(有些目录用户可以上传文件或图片,可能会被恶意者上传其它文件):编辑:/usr/local/apache2.4/conf/extra/httpd-vhosts.conf ...

  8. linux 的压缩 打包

    1.压缩打包,常见的命令:gzip bzip2 xz zip tar gzip:  不能压缩目录 gip  -[0-9]  file_name   压缩级别, 默认是6 gzip  file_nane ...

  9. Manjaro启动项目及服务配置备忘

    Manjaro启动项目及服务配置备忘 =============== 系统服务GUI管理搜索 systemdgenie 并安装,类似Windows的服务管理. ================ 系统启 ...

  10. CSU 1588 合并果子

    Description 现在有n堆果子,第i堆有ai个果子.现在要把这些果子合并成一堆,每次合并的代价是两堆果子的总果子数.求合并所有果子的最小代价. Input 第一行包含一个整数T(T<=5 ...