FPGA 通过串口将rom中的10个初始数据发送给目标模块tx串口(最简单的数据处理) 思维分析图rom模块的代码逻辑timescale 1ns / 1ps module rom_2( input sys_clk , input sys_rst_n , input tx_done , output [7:0] rom_data ,//输出给tx output reg rom_done //一个8bit数据输出的结束信号 ); reg [3:0] cnt; reg ena ; reg [7: 0] addra ; reg flag; reg [3:0] cnt_done;//计数tx——done always(posedge sys_clk) if(!sys_rst_n) cnt0; else if(cnt10) cntcnt; else cntcnt1; // always(posedge sys_clk) if(!sys_rst_n) flag0; else if(cnt9) flag1; else flag0; //cnt_done计数tx_done的次数 always(posedge sys_clk) if(!sys_rst_n) cnt_done0; else if(tx_done)begin if(cnt_done9) cnt_donecnt_done; else cnt_donecnt_done1; end else cnt_donecnt_done; // always(posedge sys_clk) if(!sys_rst_n) rom_done0; else if(flag) rom_done1; else if(tx_done cnt_done9) rom_done1; else if(tx_done cnt_done9) rom_done0; else rom_done0; // always(posedge sys_clk) if(!sys_rst_n) ena0; else ena1; always(posedge sys_clk) if(!sys_rst_n) addra0; else if(tx_done)begin if(addra9) addraaddra; else addraaddra1; end else addraaddra; rom_ten your_instance_name ( .clka(sys_clk), // input wire clka .ena(ena), // input wire ena .addra(addra), // input wire [7: 0] addra .douta(rom_data) // output wire [7 : 0] douta ); endmoduletx端口模块timescale 1ns / 1ps module tx( input sysclk , input rst_n , input [7:0] data ,//数据并行输入 input done ,//tx的开始信号 output tx ,//数据输出--串行输出 output tx_done ); parameter clk 50_000_000,//1s内部时钟晶振次数 bps 9600,//波特率 CNT_MAX clk/bps;//传输一个Bit需要的时间周期 reg [31:0] cnt_bps;//传输一个bit需要的计时器 reg [3:0] cnt_bit;//bit位计数器看传输到第几个bit reg en;//工作时间阈值包装数据---tx reg [7:0] data_reg;//输入数据寄存器 reg tx_reg; reg done_d1 0; always(posedge sysclk)begin done_d1done; end //en工作阈值 always(posedge sysclk) if(!rst_n) en0; else if(done1) en1; else if(cnt_bit9 cnt_bpsCNT_MAX-1) en0; else enen; //输入数据寄存模块 always(posedge sysclk) if(!rst_n) data_reg0; else if(done_d1)//开始工作时就寄存并行输入的data data_regdata; else data_regdata_reg; //cnt_bps--包装一个bit需要的时间计时器 always(posedge sysclk ) if(!rst_n) cnt_bps0; else if(en1)begin if(cnt_bpsCNT_MAX-1) cnt_bps0; else cnt_bpscnt_bps1; end else cnt_bps0; //cnt_bit--表示包装到了哪一个Bit--bie位计数器 always(posedge sysclk ) if(!rst_n) cnt_bit0; else if(en1)begin if(cnt_bpsCNT_MAX-1) cnt_bitcnt_bit1; else cnt_bitcnt_bit; end else cnt_bit0; //tx_reg--表示开始包装数据数据包装流水线 always(posedge sysclk ) if(!rst_n) tx_reg1;//空闲不需要打包数据 else if(en1)begin if(cnt_bit0)//包装起始位 tx_reg0; else if(cnt_bit9)//包装停止位 tx_reg1; else tx_regdata_reg[cnt_bit-1];//数据串行包装由低位开始 end else tx_reg1; assign tx tx_reg; assign tx_done (cnt_bit9cnt_bpsCNT_MAX-1)?1:0; endmodule顶层模块timescale 1ns / 1ps module top( input sysclk , input rst_n , output tx //数据输出--串行输出 ); wire done ;//tx的开始信号 wire tx_done ; wire [7:0] rom_data; rom_2 u( . sys_clk ( sysclk ) , . sys_rst_n ( rst_n) , . tx_done ( tx_done ) , . rom_data ( rom_data ) ,//输出给tx . rom_done ( done ) //一个8bit数据输出的结束信号 ); tx tx_u( . sysclk ( sysclk ) , . rst_n ( rst_n ) , . data ( rom_data ) ,//数据并行输入 . done ( done ) ,//tx的开始信号 . tx ( tx ) ,//数据输出--串行输出 . tx_done ( tx_done ) ); endmodule

相关新闻

最新新闻

从乔治·马丁延期到软件项目:长周期项目如何避免把人拖垮?

从乔治·马丁延期到软件项目:长周期项目如何避免把人拖垮?

乔治RR马丁又一次让读者等到了远超预期的周期,但这次新闻的重心不再是“书稿又延期了”,而是他在书稿延期期间公开谈论了自己经历的抑郁。对不写小说的人来说,这可能只是娱乐版的一条消息;对一个常年参与长周期软件项目的人来说&a…

2026/8/27 3:22:36
基于Ziya-LLaMA-13B与QLoRA微调,构建专业中医古籍问答模型实战

基于Ziya-LLaMA-13B与QLoRA微调,构建专业中医古籍问答模型实战

简介:大语言模型(LLM)凭借其强大的语言理解和生成能力,正逐步渗透到法律、金融、医疗等专业领域。其核心原理是通过海量数据预训练,学习通用语言模式,再通过指令微调等技术,对齐特定领域的知识体…

2026/8/27 3:22:36
循环技术全解析:从语法、事件循环到依赖排查实战

循环技术全解析:从语法、事件循环到依赖排查实战

整理笔记的时候,我习惯把一个主题拆成独立项目来归档。loopx 就是其中一个以“循环”为主线做技术梳理的项目名,它既是一个学习索引,也是一组工具函数集合,专门用来总结循环相关的基础语法、异步事件循环、循环依赖以及死循环排查…

2026/8/27 3:22:36
从MATLAB到LINGO:线性规划建模思维转换与实战进阶

从MATLAB到LINGO:线性规划建模思维转换与实战进阶

1. 项目概述:从MATLAB到LINGO,线性规划求解的“第二把刀”搞数学建模或者运筹优化的朋友,对MATLAB的linprog函数肯定不陌生。它就像我们工具箱里的瑞士军刀,开箱即用,处理中小规模的线性规划问题非常顺手。但不知道你有…

2026/8/27 3:22:36
Python标准库深度解析:从pathlib到并发编程的实战指南

Python标准库深度解析:从pathlib到并发编程的实战指南

1. 从“能用”到“会用”:为什么你需要重新认识Python标准库刚接触Python那会儿,我和很多人一样,觉得标准库就是那些print()、len()、open()之类的内置函数,加上os、sys几个常用模块。直到有一次,我需要处理一个复杂的…

2026/8/27 3:22:36
MOSFET开关损耗:从原理到实战,优化电源效率的关键

MOSFET开关损耗:从原理到实战,优化电源效率的关键

1. 项目概述:为什么开关损耗是MOSFET选型的命门?如果你正在设计一个开关电源、电机驱动器或者任何涉及功率转换的电路,那么“MOSFET开关损耗”这个概念,绝对是你绕不开、也绝不能忽视的核心课题。这不仅仅是数据手册上几个需要计算…

2026/8/27 3:17:36