我想在vhdl中将莫尔斯代码实现为ASCII转换器,然后通过UART将该ASCII字符传输到PC终端。我已经完成了UART部分。
但我不知道如何实现转换器部分。问题是输入莫尔斯码的符号率不同。我想检测点,破折号,字符空间和单词空间。
请帮我完成以下实施:
答案 0 :(得分:1)
好像你计划分两个阶段进行转换,这听起来像个不错的想法 - 解码点,破折号和暂停的第一阶段,将这些转换为字符的第二阶段。
对于第一阶段,您需要为输入定义一些最小和最大时间 - 也就是说,点/短划线/等等可以持续的最短和最长时间(我认为它有一些标准)为此?)。
使用这些时序,应该可以使用计数器和边缘检测器来解码输入的莫尔斯信号。
对于第二阶段,您可以创建一个有限状态机,或者甚至只是一个查找表来解码单个字符的传入点和短划线,并将其发送到您的UART。
答案 1 :(得分:-2)
您需要创建一个模块,对您的输入进行采样,并根据您记录的模式,使用一些固定模式输出相应的字母。您需要研究接收信号的宽度,以估算采样率应该是多少。您可以尝试阅读并理解github上的以下共享代码。 https://github.com/altugkarakurt/Morse-Code-Converter将执行生成莫尔斯电码的逆向过程。这可以用作Morse Reader的测试生成器。来自莫尔斯检测器的代码ASCII提取可以输入FIFO,这是一个标准电路并连接到UART。如果FIFO未满,则莫尔斯检测器将ASCII写入FIFO,而UART从FIFO读取ASCII并将其发送到UART。 FIFO充当缓冲区。如果您需要一些标准的UART代码,请查看Xilinx网站,该网站具有Microblaze设计的一个UART部分,接口非常简单。