我最近购买了Mojo v3,它已经拥有UART模块与AVR和AVR通信到计算机。
我的问题是:如何将其与其他模块连接?
假设我有一个接受x字节的MD5核心,从串行x字符读取的最佳方法是什么,直到按下输入,然后将其发送回MD5核心?
好的,我是一个纽伯,更不用说MD5,让我们说我只是想制作一个简单的回声。
我应该在哪里开始?使用FIFO?移位寄存器?简单的数组?糟糕?
这是AVR接口(UART):

module avr_interface(
    input clk,
    input rst,
    input cclk,

    output spi_miso,
    input spi_mosi,
    input spi_sck,
    input spi_ss,
    output [3:0] spi_channel,

    output tx,
    input rx,

    input [3:0] channel,
    output new_sample,
    output [9:0] sample,
    output [3:0] sample_channel,

    input [7:0] tx_data,
    input new_tx_data,
    output tx_busy,
    input tx_block,

    output [7:0] rx_data,
    output new_rx_data
);
.

我正在使用本教程作为基础来了解更多信息: http://embeddedmicro.com/tutorials/mojo/hello-world/
我已经通过字节制作了一个简单的回声字节,但这不是重点。按下ENTER时,我只需希望该字符串回复。 谢谢。

更新:
Mojo开发人员在这里发了一个很棒的例子:
http://hembeddedmicro.com/forum/viewtopic.php?f=2 & ; t= 697&start= 10
谢谢。

有帮助吗?

解决方案

回应一个任意长度块,您需要一个FIFO和某种状态机来控制它。 FIFO输入将连接到来自UART RX模块的总线。 FIFO输出将连接到PUART TX模块的总线。还需要成为“阻止”FIFO的OUPTPUT的方法,以便它不会发送一个字节。简化的方法是刚刚和控制信号,其中“就绪”信号进入FIFO,“有效”信号从FIFO到UART TX模块。

然后,所有状态机都必须看看FIFO两端的数据。每当收到ENTER KEYPRESS时,会递增计数器。只要输入按键从FIFO出来,减少计数器。当计数器大于零时,取消阻止FIFO输出。否则,阻止它,所以没有数据出现。

如果要将特定数据发送到特定模块,那么您应该做的是定义某种类型的二进制数据包格式。基本上,您需要某种启动标识符,并且可能是某种类型的类型标识符,然后是数据。然后在FPGA上,您可以等待开始分隔符,检查类型,然后按照它们进入时将字节加载到寄存器中。一旦您收到整个数据包,那么您可以发送您与您通信的任何模块所有数据准备好的信号。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top