完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,
我正在使用Spartan 6将Raspberry Pi板连接到开发板。我想使用SPI进行此操作。 由于开发板的设计方式,这意味着我需要将SPI CLK和DATA连接到标准IO引脚。 我知道需要使用双缓冲来桥接时钟域以防止亚稳态。 这样做我没有看到太多问题:只有一个8位寄存器和一个字节准备就绪的信号需要与内部结构时钟同步。 我并不是想要获得巨大的数据速率(实际上数据将进入FIFO,因此RPi将在写入每个字节之前使用GPIO检查FIFO FULL信号。这意味着只有每25us写一个字节 我想时钟频率为15MHz,如果有必要,甚至可以减少它。 这是我的verilog。 它模拟了很好,我正在进行基准测试。 模块my_spi_in(// RPI时钟域输入i_RPI_spi_data,输入i_RPI_spi_clk,输入i_RPI_reset,//内部64MHz域输入i_sys_clk,输出[7:0] o_data,输出o_fifo_write); //在RPI时钟域寄存器中注册[7:0] r_RPI_shift_in = 8 'b0; reg [2:0] r_RPI_ctr = 3'b0; reg r_RPI_word_done = 1'b0; // synchronization registersreg [7:0] r_data_sync_1 = 8'b0; reg [7:0] r_data_sync_2 = 8'b0; reg [2:0] r_word_done_sync = 3'b0; // RPI时钟域:输入移位寄存器logicalways @(posedge i_RPI_spi_clk,posedge i_RPI_reset)beginif(i_RPI_reset == 1'b1)beginr_RPI_shift_in r_RPI_ctr endelse beginr_RPI_ctr r_RPI_shift_in endend // RPI时钟域:word donealways @(negedge i_RPI_spi_clk)beginif(~i_RPI_reset&& r_RPI_ctr == 3'b000)r_RPI_word_done else r_RPI_word_done end // sync registersalways @(posedge i_sys_clk)beginr_data_sync_1 r_data_sync_2 r_word_done_sync [0] r_word_done_sync [1] r_word_done_sync [2] end assign o_data = r_data_sync_2; assign o_fifo_write = r_word_done_sync [1]&& 〜r_word_done_sync [2]; endmodule 在我的.ucf文件中,我只有以下内容,告诉ISE这不是一个“真正的”时钟: #RPI SPI clockNET“i_RPI_spi_clk”CLOCK_DEDICATED_ROUTE = FALSE; 我的问题:这是正确的做法吗? 我还需要做其他事情吗? (理想情况下,也可以为SPI时钟和数据设置一些时序约束。( 先谢谢你的建议。 |
|
相关推荐
2个回答
|
|
我建议不要在系统内部使用不支持时钟的IO作为时钟。
SPI从器件的通常方法是时钟频率过高,使用系统时钟对SPI时钟和SPI数据进行采样。 因为你的系统时钟比你假设的SPI时钟(超过4倍)快得多,我会这样做。 从那时起,您可以根据您自己的状态机启用时钟上升和下降信号。 您只需要在采样时执行一次时钟域穿越,之后,您将进入sysclk域。 使用非专用时钟路由并不意味着它不是ISE的时钟 - 相反。 它仍然是一个时钟,因为你将它用作一个时钟。 但是系统的行为将比平时更糟糕,因为您无法使用可用于时钟的专用路由IO。 |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
2391 浏览 7 评论
2806 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2273 浏览 9 评论
3348 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2441 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
773浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
555浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
396浏览 1评论
1980浏览 0评论
698浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 06:55 , Processed in 1.384253 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号