2

我最近购买了 Mojo v3,它已经具有与 AVR 通信以及从 AVR 到计算机的 UART 模块。
我的问题是:如何将它与其他模块连接?
假设我有一个接受 X 字节的 MD5 内核,在按下 Enter 之前从串行 X 字符读取然后将其发送回 MD5 内核的最佳方法是什么?
好吧,我是新手,别说MD5了,就说我只想做个简单的回声吧。
我应该从哪里开始?使用先进先出?移位寄存器?简单的数组?布拉姆?
这是 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
://embeddedmicro.com/forum/viewtopic.php?f=2&t=697&start=10谢谢。

4

1 回答 1

0

要回显任意长度的块,您将需要一个 FIFO 和某种状态机来控制它。FIFO 输入将连接到来自 UART RX 模块的总线。FIFO 输出将连接到通往 UART TX 模块的总线。还需要有一种方法来“阻止”FIFO 的输出,这样它就不会发送字节。最简单的方法就是将控制信号与进入 FIFO 的“就绪”信号和从 FIFO 到 UART TX 模块的“有效”信号相结合。

然后状态机所要做的就是查看 FIFO 两端的数据。每当收到回车键时,增加一个计数器。每当输入键从 FIFO 中出来时,递减计数器。当计数器大于零时,解锁 FIFO 输出。否则,阻止它,这样就没有数据出来了。

如果您想将特定数据发送到特定模块,那么您应该做的是定义某种二进制数据包格式。基本上,您需要某种类型的开始标识符来构建框架,可能还需要某种类型的标识符,然后是数据。然后在 FPGA 上,您可以等待起始分隔符,检查类型,然后将字节按顺序加载到寄存器中。一旦您收到整个数据包,您就可以发送任何正在与之通信的模块表示所有数据都准备好了。

于 2013-11-16T20:22:14.413 回答