- 1、本文档共91页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
状态机的优势: 图13-15 算术逻辑单元时序仿真波形图 2.累加器模块(ACC)的VHDL源程序 library ieee; use ieee.std_logic_1164.all; entity acc is port(data_in:in std_logic_vector(7 downto 0); --数据输入 ai:in std_logic; --累加器a的输入命令信号ai ao:in std_logic; --累加器a的输出控制信号ao clk:in std_logic; --时钟频率输入 data_out:out std_logic_vector(7 downto 0) ); --累加器数据输出 end acc; architecture a of acc is signal regq:std_logic_vector(7 downto 0); begin process(clk,ai,ao) begin if (clkevent and clk=1) then if (ai=0) then regq=data_in; end if; end if; end process; data_out=regq when ao=0 else ZZZZZZZZ; end a; 图13-16 累加器模块时序仿真波形图 3.节拍发生器(COUNTER)的VHDL源程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity counter is port(clk,clr:in std_logic; --系统时钟和异步清零控制信号 t0,t1,t2,t3,t4,t5,t6,t7:out std_logic ); --节拍脉冲输出 end counter; architecture a of counter is signal temp:std_logic_vector(7 downto 0); begin t0=temp(0);t1=temp(1); t2=temp(2); t3=temp(3); t4=temp(4); t5=temp(5); t6=temp(6); t7=temp(7); 13.5.3 状态机的状态编码 1. 顺序二进制编码 表13-2 顺序二进制编码 2. 格雷码编码 表13-3 格雷码编码 3. One-Hot编码 表13-4 One-Hot编码 13.5.4 状态机的VHDL设计 1. 状态机的VHDL设计步骤 分析控制器设计指标,建立系统算法模型图,即状态转移图; 分析被控对象的时序状态,确定控制器状态机的各个状态及输入、输出条件; 应用VHDL语言完成状态机的描述。 2. 状态机的VHDL描述方法 单进程(一段式)FSM描述方法是将整个状态机的三个模块合并起来,写到1个进程里面,在该进程中即描述状态转移,又描述状态的输入和输出; 两进程(二段式)FSM描述方法是用2个进程来描述状态机,其中当前状态寄存器用一个同步时序进程来描述,输出逻辑和次态逻辑合并起来,用另一个组合逻辑进程来描述; 三进程(三段式)FSM描述方法是将状态机的三个模块分别用3个进程来描述,一个同步时序进程描述状态寄存器,一个组合逻辑进程描述次态逻辑,最后输出逻辑单独用一个进程来描述。 表13-5 三种FSM描述方法比较 3. 状态机的VHDL设计相关语句 TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型 ; TYPE 数据类型名 IS 数据类型定义 ; type m_state is (st0,st1,st2,st3,st4,st5); (1)状态定义语句 signal current_state:m_state; --定义现态 signal next_state:m_state; --定义次态 (2)状态变量定义语句 ① 描述状态寄存器的进程: process(reset,clk) begin if reset=‘1’ then current_state=[初始状态]; elsif clk’event and clk=‘1’ then current_state=next_state; end if; end process; (3)三个模块进程描述语句 ② 描述次态逻辑的
您可能关注的文档
- 市场营销大赛策划书最新.doc
- 市场营销学-16章 国际市场营销.ppt
- 市场营销职业生涯规划(市场营销专业作业).doc
- 市场营销职业生涯计划.docx
- 市政园林教育考核管理系统--市政习题集(ABC全部课程).doc
- 事业计划管理业务培训.pptx
- 试论酒店前厅部实习生培训体制构建.pdf
- 视觉传达工作室申请书.doc
- 视觉营销——卖场陈列技巧.ppt
- 视频管理软件技术分析报告.pdf
- 2025年东南亚跨境电商市场产品退货与售后服务报告.docx
- 2025年物流与供应链在物流行业物流配送中心的物流设备.docx
- 2025年图书出版市场旅行指南读者阅读偏好与市场研究报告.docx
- 汽车行业供应链韧性评估与风险管理实践案例研究报告.docx
- 体育消费金融产品创新在户外运动领域的应用与风险控制.docx
- 银发族教育需求与在线教育平台发展白皮书.docx
- 文化创意产业资金申请策略报告:2025年度重点.docx
- 保险业数字化理赔服务效率提升解决方案报告2025.docx
- 消费升级浪潮中新国货品牌打造与品牌跨界合作案例分析报告.docx
- 有机食品市场需求增长与品牌建设策略研究报告.docx
文档评论(0)