单片机fpga并行通信,能不能只用单片机的P2和P0口,而不用wr,rd,ale这样可以吗? 能否做到双向通信?????
发布网友
发布时间:2022-05-12 07:29
我来回答
共5个回答
热心网友
时间:2024-02-19 16:46
首先,从硬件角度上,只要你P0口接上拉电阻(P0为开漏输出),P0和P2接到FPGA端口上面是行得通的。不过需要注意的是,51单片机的高电平是5V而FPGA的高电平是3.3V,所以接口之间要接一个电平转换芯片(LVC244,LVC245等等)。
FPGA是纯硬件的,只要你设计合理,完全能达到你的目的。
剩下的就只有51单片机的软件设计了,目前我还没有搞清楚你是要实现扩展IO口呢还是要做并行数据通行。不过这两种肯定都能实现,不需害怕编程能否通过等等。
总归一句话,你的方案是合理的,可行的,设计上需要下功夫。如果程序有错误肯定编程不通过,更别说实现功能。追问我想把fpga当成寄存器用,即扩展单片机的io口。电平不一致这个不是问题。
热心网友
时间:2024-02-19 16:46
有没有想过:
假设你用 P0 扩展输入 PEx01, PEx02。
由于最终都是由 P0 口接收信号,然后由单片机处理,但某一时刻 P0 口收到的是 PEx01 还是 PEx02 扩展口得信号呢?
这里必须有一个串行或并行的地址信号通知 FPGA 现在开通的是 PEx01 还是 PEx02 扩展口。
P2 扩展输出 PEx21,pEx22 情形也是一样。
举个例子:扩展 P0 口 到 64 位输入口
用 8 片 74HC245 (8位3态总线驱动器),每片的 A0...A7 并联连入单片机 P0 口,单片机 P1 口用作片选,分别连接每片 74HC245 的 OE。
程序运行时,扫描使能每片 74HC245 ,然后读取 P0 口,这样来达到扩展目的。
当然也可使用移位寄存器作片选,以减小单片机I/O的浪费。
(以上纯属愚见)
热心网友
时间:2024-02-19 16:46
你都用fpga来扩展了接口,地址锁存,译码这些应该很简单呢,总线你都能扩展,难道wr,rd,ale这些信号你不能从fpga里驱动出来吗?外部扩展的接口还是要用读写信号的。
读写信号你不用,用一定的时序来玩并行通信,有点那个
热心网友
时间:2024-02-19 16:47
首先 如果是传数据的话 要考虑速度匹配,FPGA的速度很快的啊,然后就像楼上说的电平匹配(FPGA和单片机的电平有的不一样的,而且比如有的FPGA的高电平为3.3V)。我没这么用过啊!只是自己的想法!
热心网友
时间:2024-02-19 16:48
老兄说的那么多,顶一下