当前位置:首页 > 嵌入式 > 嵌入式硬件

摘 要: 通用非同步收发传输器UART是一种通用串行数据总线,双向通信,可以实现全双工传输和接收,用于异步通信。在Simulink环境下,用STATEFLOW对其进行建模,可以将其原理直接转化成模型,摆脱了传统方式下直接手写代码的弊端,而且可以自动生成HDL代码,为FPGA的设计、开发开辟了新的途径。
关键词: 代码自动生成;STATEFLOW;HDL;FPGA

1 传统设计方法与基于模型设计的比较[1]
1.1 传统设计方法的缺陷
(1)信息的交流依赖文档
传统的开发方法中,在不同阶段彼此之间传递的信息需要依赖文档。由于工程师对系统的认识与理解有一定的局限性以及对文档理解的二义性,会在系统开发的过程中引入一些缺陷甚至错误,而这些缺陷或者错误会一步一步地传递到下一个设计阶段。
(2)早期设计阶段引入的错误要在开发后期才能发现
由于设计的嵌入式软件算法需要专门的硬件生产出来之后进行集成的测试,因此在设计阶段早期,引入的一些设计错误要在软、硬件产品都具备之后进行集成与测试时,在开发后期才能够发现早期的错误,此时修正起来不是那么简单,极有可能需要重新编写软件,甚至重新开发硬件。
(3)手写代码与手写文档
传统的设计方法中,产品实现过程只能够利用手写代码来完成。这对于FPGA、HDL的初学者和工程师都是一件麻烦事。文档的错误,再加上手写HDL代码的错误,最终的产品就可能有很多问题,以致于无法完成最后的子系统、分系统和全系统的集成工作。
1.2 基于模型的设计优势
(1)在基于模型的系统设计过程中,所有过程遵循统一环境下的统一的模型。由于可以把测试手段从系统设计的初期引入到整个设计流程中,作为规范的模型能够通过执行仿真来验证自己的正确性,从而保证了规范的正确性。
(2)连续不断的测试与验证。在模型设计的每个环节都引入了测试仿真手段。利用充分的仿真,可以考察系统不同组件对整个系统的影响。
(3)自动代码生成。传统的FPGA设计方法往往是一开始就手写HDL代码,这对于初学者是件困难的。而基于模型的设计优点是只要知道设计原理,就可以用模型直观地设计,省去了手写代码的麻烦,提高了开发的效率,缩短了开发周期。而且模型做成子系统后可以自动生成HDL代码,如果有错,只要修改模型,再重新生成HDL代码即可,为后续的开发提供了便利。
2 UART串口通信原理
在空闲时,TXD为高电平。发送时,先发送起始位(低电平),再发送数据位,最后发送停止位(高电平),发送过程为并入串出。对于接收,空闲时RXD为高电平,低电平来到时,在该位的当中进行采样,如果为0,则为起始位,说明可以采集后面的数据位,直至最后的停止位,接收过程为串入并出。
数据时序图如图1所示。

3 用Simulink、STATEFLOW实现对UART串口行为建模
(1)UART发送模块的STATEFLOW建模如图2所示,TxDS与CnTS为并行状态。

TxDS:从IDLE状态开始,在此状态中,将位计数(BitCnt)设置为0、Ready设置为1(告诉前级模块此时为空闲可以将数据并行传入),将空闲时为高电平(TxD)设置为1;当并行数据有效(Valid=1),将BitCnt设置为10,将要发送的数据(TxDdata)放入临时变量(Tmp),Ready设置为0(告诉前级模块正在发送数据,不要再将新的数据传入)从而进入起始位的发送;进入START状态,发送起始位(TxD=0),当波特率发生器(RateCnt)从15降到0时即控制每一位发送的时间,进入RSHIFT状态(发送数据位);在RSHIFT中,BitCnt减1(即1位发送完毕),将存放在Tmp中待发送数据的最低位取出(发送时先发送最低位),然后Tmp右移1位(准备下一次次低位的发送),当BitCnt减到2时,进入STOP状态;在STOP状态中,发送停止位高电平(TxD=1)。
CnTS:波特率发生器。
(2)UART接收模块的STATEFLOW建模如图3所示。RxDS、CnTS、RTS并行工作。

RxDS:在IDLE状态中,将BitCnt置0,判起始位是否到来,如果为0,进入START中,BitCnt加1变为1。当RateCnt从7减到0时,即在该位的中间时进行判断,如果此时还为0,则确定其为起始位,进入DATA;当RateCnt从15减到0,即在每个数据位的中间对数据位进行判断,将接收到的最低位存放在临时变量Tmp的最高位。通过不断的移位就会将接收到的最低位移到Tmp的最低位,在这个过程中BitCnt不断加1,当BitCnt加到9时回到IDLE。
CnTS:波特率发生器。
RTS:负责后续模块之间的握手。
(3)为了生成HDL代码,必须将UART发送模块和接收模块的STATEFLOW建模部分做成子系统,分别如图4、图5所示。

(4)将发送模块与接收模块连接成整个Simulink模型,如图6所示。

(5)UART模型的仿真运行结果如图7所示。

(6)将发送与接收的代码在Quartus II下做成Symbol,并组成顶层图形文件,如图8所示。

(7)在Quartus II下仿真。
①发送模块在Quartus II下的仿真如图9所示。
②接收模块在Quartus II下的仿真如图10所示。
③顶层图形文件在Quartus II下的仿真如图11所示。

本文在Simulink环境下,用STATEFLOW对UART进行建模。事实表明,用STATEFLOW建模克服了手写代码易出错、效率低等弊端,在了解UART原理的基础上,可用直观的模型将原理生动地表达出来,为FPGA设计人员提供了很大的便利,也为FPGA的设计提供了新的方式。
参考文献
[1] 张威.STATEFLOW逻辑系统建模[M].西安:西安电子科技大学出版社,2007.

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

阿联酋迪拜2025年8月26日 /美通社/ -- 纳斯达克上市公司Robo.ai Inc.今日正式宣布完成品牌焕新升级,并于8月26日正式启用全新纳斯达克股票代码"...

关键字: AI 人工智能 代码 智能科技

北京2025年8月13日 /美通社/ -- 近日,北京积算科技有限公司(以下简称"积算科技")推出一站式AlphaFold3在线算力服务,现已开放免费使用。其内置优化后的AlphaFold3模型,支持...

关键字: ALPHA 代码 图形化 蛋白质

北京2025年7月21日 /美通社/ -- 浪潮信息宣布元脑企智一体机已率先完成对Kimi K2 万亿参数大模型的适配支持,并实现单用户70 tokens/s的流畅输出速度,为企业客户高效部署应用大模型提供高处...

关键字: 模型 AGENT TOKEN 代码

7月18日,一则“微信安卓安装包出现5处fxxk”的话题,迅速登上微博热搜,吸引了众多网友的热议和关注。

关键字: 代码 程序员

共鉴AI未来,缅怀先辈贡献 深圳 2025年5月21日 /美通社/ -- 5月16日下午,深圳市金澄智创AI+传承迎来了乔迁之喜,一场意义非凡的活动在新址盛大举行。活动现场星光熠熠,庄世平前辈之子庄荣新先生、南方财经...

关键字: AI AI技术 BSP 代码

C语言代码优化与性能提升是软件开发中至关重要的一环。优化C语言代码不仅可以提高程序的执行效率,还可以减少资源消耗,提升用户体验。

关键字: C语言 代码

Qt 路线图致力于实现与各行业技术栈的无缝集成,助力企业与开发者使用自选工具,更高效地构建、扩展和维护软件解决方案。 芬兰埃斯波 2025年5月7日 /美通社/ -- 在今日举行的2025年Qt全球峰会上,Qt...

关键字: GROUP 生态系统 开发者 代码

——首批"专家级数字员工"部署上岗,构建组织传承与人才战略的AI导师矩阵 北京2025年4月25日 /美通社/ -- 在生成式AI技术加速重构组织能力与人才机制的当下,如何留住专家经验、培养管理人才...

关键字: AI 智能体 矩阵 代码

深圳2025年4月21日 /美通社/ -- 近日,国家发展改革委公布第 31 批国家企业技术中心认定名单,华测检测认证集团股份有限公司(股票代码:300012.SZ,简称 "CTI 华测检测")凭借在检验检测领域的全链条...

关键字: TI IC 代码 半导体

珠海2025年3月13日 /美通社/ -- 近期,AI工具DeepSeek引发广泛关注,大量非专业投资者试图借助其生成股票策略,却面临现实困境:平台输出的Python代码策略对零编程基础用户存在极高使用门槛。即...

关键字: EPS 代码 PSE AI
关闭