Verilog 8位到X,X再次到8



我最近购买了Mojo v3,它已经有了UART模块来与AVR以及从AVR到计算机进行通信。
我的问题是:如何将其与其他模块连接?
假设我有一个接受 X 字节的 MD5 内核,从串行 X 字符读取直到按 Enter 然后将其发送回 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
谢谢。

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

然后,状态机所要做的就是查看FIFO两端的数据。 每当收到回车键时,递增计数器。 每当 FIFO 发出回车键时,请递减计数器。 当计数器大于零时,取消阻止 FIFO 输出。 否则,请阻止它,以便不显示任何数据。

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

相关内容

  • 没有找到相关文章

最新更新