问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

FPGA 怎么实现UART串口和IIC口或SPI 通讯?可以大概说一下吗?

发布网友 发布时间:2022-05-02 20:57

我来回答

4个回答

热心网友 时间:2022-06-27 04:05

1. FPGA与MCU,DSP,ARM等区别
MCU等是属于软件编程,程序是顺序执行,即使像DSP有多级流水线,但是程序总体还是顺序的。
FPGA是属于硬件编程,程序是并行执行的,可以有多个进程,同时执行不同的功能。
2. FPGA实现UART,IIC,SPI。
如果是简单的应用(比如说不用校验等等),完全可以自己写,例如下面的程序,VHDL写的,既可以作为UART发送程序(改改就是接收),也可以做SPI发送或者接收(加一个时钟)。
如果需要较完善的功能的话,建议使用IP核,往上有很多免费的UART,IIC,SPI等接口的IP核,功能及代码都给你写好了的,提供输入输出接口,方便应用。

process(Clk)
variable temp : integer range 0 to 7;
begin
if Clk'event and Clk='1' then
if Reset = '0' then
TxD <= '1';
BitCnt <= "00000";
SL<='1';
TReg<=(others=>'0');
temp:=0;
elsif Load = '0' and temp=0 then
TxD <= '1';
SL<='1';
BitCnt <= "00000";
temp:=0;
elsif Load='1' and temp=0 then
temp:=1;
elsif temp=1 then
case BitCnt is
when "00000" =>
TReg <= Addr_Data;
SL<='0';
TxD <= '0';
BitCnt <= BitCnt + 1;
temp:=1;
when "00001" | "00010" | "00011" |
"00100" | "00101" | "00110" |
"00111" | "01000" | "01001" |
"01010" | "01011" | "01100" |
"01101" | "01110" | "01111" =>
TxD <= TReg(0);
TReg <= '1' & TReg(14 downto 1);
BitCnt <= BitCnt + 1;
temp:=1;
when "10000" =>
SL<='1';
TxD <= '1';
TReg <= '1' & TReg(14 downto 1);
BitCnt <= "00000";
temp:=0;
when others => NULL;
end case;
ELSE
TXD<='1';
SL<='1';
end if;
end if;
end process;追问您好,真心感谢
还想请问下,FPGA通讯比如UART,也可以设置帧头如(0xee,0xee,0xee)+数据包+帧尾(0xfe,0xfe,0xfe)这样格式,接收数据包后保存吗?
FPGA里也应有一定的RAM空间供你的上面所说“ FPGA是属于硬件编程,程序是并行执行的,可以有多个进程,同时执行不同的功能”去运行使用还是怎么的?内部都自带RAM吗?
我看到一般的FPGA都外接flash。。。供每次上电时flash内程序下载到FPGA。都是这样吗?
EEPROM有没有使用?

追答怎么回答N次了,都回答不上啊,

热心网友 时间:2022-06-27 04:05

你有以下方法可以实现:
  1、参照UART串口、I2C、SPI协议,用状态机来模拟master和slave;UART的程序可见参考资料,I2C的我也只写过slave,SPI相对来说简单一点。
  2、既然你对MCU很熟悉,更简单的你可以在FPGA内部内建MCU的IP,这样你就可以直接用MCU来实现的你通讯了;
希望这些对你有帮助,欢迎追问。追问您好,用状态机来模拟master和slave?
请问“状态机”指的是什么?
是使用仿真软件上的 tool 还是什么?

追答状态机在FPGA应用中非常普遍,用于实现不同状态之间的切换的。如果你不清楚状态机的话,建议你先学习下VHDL或verilog的书,任何一本入门的书籍中都会有的。

热心网友 时间:2022-06-27 04:05

MCU内部集成了I2C和SPI总线控制模块,通过设置相应的寄存器即可产生总线时序,而在FPGA里面,所有的总线时序都需要你自己模拟产生。所以,关键是要清楚总线协议,并且查阅器件的时序图,通过硬件描述语言产生读写时序,即可正常读写器件。

热心网友 时间:2022-06-27 04:06

既然是FPGA,对方是啥接口你设计啥接口.追问谢谢你的回答
是不是FPGA的引脚,比如a,b,c,d四个脚,通过设置内部时序及逻辑。
可以把它设置成与外部UART相连,也可以改变下内部时序及逻辑把它作SPI、IIC甚至CAN BUS使用吗???
RAM内部也有使用吧

追答理解正确. 但有些细节需要注意:
1. CAN略有不同,就是一定要选择能配成差分对的IO.
2. SPI的SCK最好选能配成时钟的io, 但然由于SPI速度也不高, 用io未尝不可.
3. 接不同外设, 需考虑电平一致性. 譬如外设用3.3, 你FPGA相应io对应的Bank电压得是3.3, 否则配成UART后端口电平譬如是2.5V了就不合格.
4. FPGA内RAM块是用于实现高速算法用的, 容量都很小. 拿用作MCU实在太浪费了, 宁愿闲着. 用FPGA的io接到SRAM是很方便的. 但接DDR,DDR2有点难度, 因为差分,速度, 最好看芯片手册确信支持,有无MegaCore/IPcode可例化.

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
揭秘:码牌支付风控升级,背后真相揭秘 电脑电视直播软件哪个好用什么软件好电脑看电视直播 潼南子同街学区是哪些 三极管BU406价格和参数? 火锅料放在冰柜忘了插电一个星期给会坏了吗 火锅的设备有哪些 火锅餐厅厨房有哪些 小火锅厨房设备有哪些 饭店传菜机厂家 有什么好看又惊艳的微信头像? - 知乎 二氧化碳传感器T6615介绍中说 数字输出:UART 模拟输出:0~4V 虚拟串口和电脑自带串口的区别 单片机Uart串口的RXD、TXD不够用,可以用普通IO口模拟RXD,TXD口吗? 什么是虚拟串口 IO口模拟uart,明明用示波器抓到的发送的数据是正确的,为什么用串口工具收到的是乱码? 单片机IO口模拟UART串口通信时改变波特率会出现误码,求问大神是怎么一回事,代码如下: 用单片机模拟UART通信是全双工还是半双工? 请教如何将S3C2410的GPIO模拟成Uart uart串口通信协议可以模拟吗 2015江苏省公务员考试相关辅导课程? 江苏省公务员考试补习班中政好吗 江苏省公务员考试辅导哪个好 江苏省公务员的辅导班 江苏公务员面试辅导班哪家好? 【求助】想江苏省考公务员,想请问一下买什么资料好呢? 有无江苏省公务员的辅导班!一定要好的是权威机构!在徐州的!谢谢了! 准备参加明年江苏省公务员考试有什么好的辅导班吗? 羽绒服拧干后怕坏了,在拿出去用水洗下晒了行吗 羽绒服能不能用手洗啊! 从日本东京到韩国首尔坐飞机,大概要飞多长时间? 串口通信 怎么做模拟 51单片机模拟串口 哪里有简单好用虚拟串口(模拟串口)的软件? 虚拟串口有什么用?? 西方世界的劫难答问题后怎么动,答完智慧老人问题后动不了 ...茶壶的形状有没有讲究?比如喝红茶最好用什么壶型。 西方世界的劫难2的4个问题 defence和offence区别 玩西方世界的劫难3做答题任务时却触发了救不救尼娜的任务,现在老是显示在答题中,怎么解决啊 offence和irritation的区别 suicide mistake error fund crime offence区别 西方世界的劫难III---斯贝斯的诅咒慕容古堡图书馆回答问题,只加护甲的*饰品是什么? suicide mistake error fund crime offence 的区别 off/def rebound在篮球比赛中是什么意思 西方世界的劫难1.17最终版神秘囚徒问题 足球里OFE是什么意思 who use happy apple offence your uncle什么意思 猛犸电动车可以不用充电,直接换电池是真的吗? 买骑幻出行的电动车,没电了就可以直接换电池无需充电? 电动车有没有可拆卸电池,没电了可以用备用电池换下。就像手机换电池那样,有没有这种方式的电动车呢?