fpga 串口通信 rx 要不要上拉
fpga 串口通信 rx 要不要上拉
使用RS-232通讯,可以使用 : 1个起始位 + 8个数据位 + 1个停止位。然后使用FPGA的串口接收模块接收数据。长度不一样完全可以调整一下,缺位的补全8位,多的拆开成2个字节。
直接写不可能,因为FPGA配置端口时序是固定的,但是可以在串口和FPGA中间加一个时序芯片接收串口的数据然后按照FPGA的配置时序将数据写入FPGA,usb blaster功能类似只是将USB协议转换成FPGA烧写时序。
目前pc机的现成通信端口有USB端口和以太网端口以及PS2端口等。这其中,以太网端口速度比较快,带宽比较宽。你只要在DE2上开发好板上以太网的驱动就可以与PC机通过网线(交叉线)或者交换机(平行线)来实现数据传递了。如果你觉得开发DE2的以太网端口比较麻烦,而且你的数据量不大,通信速率也不高的话,可以在DE2上开发一个简单的串口通信端口(UART),然后买一个USB转串口的适配器插到PC机上,就可以通过串口传输数据了。
指的是在串行通信的时候通过十六进制进行传输,hex是十六进制的标志。
一般串口软件的hex发送是将发送的字符串中数字两个两个十六进制化。编写软件需要先了解通信规约,一般辅助调试可以用一些通用的协议软件,如格西烽火软件等,把通信协议测试通过后再进行嵌入到自己的程序中。
你的本意是收发握手无限循环吗?
rx_finish在第一次接收完成后就常'1'了,所以tx端从第二次发送开始就变成连续发送了。
假定收发数据本身都是正确的,发送的数据"rx_data"就是从rx模块连过来的,那么数据一直是0就对了,因为初始化就是发送0,中间不论循环收发多少次,都是直接转发,所以常0很正常。
另外问一下:
你的clk、clk_bps是几倍频率差距?
一个周期clk_bps的波形是宽度为一个clk周期的脉冲还是占空比50:50?
问这个的意思是clk_bps过宽的话你的状态机会因此而"打滑"~~
你如果fpga io口资源够得话,那就用16位接受的嘛, 在fpga里面什么8位,16位的都是自己随便设的,100位都可以,改改程序赛。如果io资源不够非要用8位接受16位的话,在fpga接受前加个什么数据选通器什么的,分开传送高8位和低8位。
串口通信你可以理解为一个固定波特率的时钟对数据线上的信号进行采样,之所以说下降沿是因为在没有数据的时候数据线上一直都是高电平,也就是全1,当检测到第一个下降沿也就是第一个0的时候就相当于一个起始标志了,后面的就固定表示8位数据,固定的!两个数据中间间隔一个10组合,就是这么规定的。
如果你的意思是说想在示波器上识别出到底是什么数据,你可以这样
1第一个0后是第一字节数据
2读完8比特
3后面必定跟着一个10,这个就理解是字节和字节之间的间隔符
4,继续读下一比特
多读一些数据,之后你会发现读起来很简单。
0条评论