目录

前言

空调控制器

简介

状态转移图如下:

Verilog HDL语言描述

测试文件

仿真图

ISE综合

RTL Schematic

Technology Schematic


前言

关于工具的使用,这两天我比较重视,因为我想找到一些替代手工的工具来帮助画图,昨天无意间发现了画时序图的工具(WaveDrom),觉得十分的好用,因此写了一篇博文,专门的介绍,用了两个案例介绍了如何使用。见博文:对如何使用WaveDrom画波形图的研究(案例分解分析)。

今天想专门清理下有限状态机的相关知识,这其中就需要画状态转移图,于是又寻思寻找一个画状态转移图的工具,我知道的有Visio,可是我不想用这个软件,找了好几个,最终选择了Edraw(亿图),还挺方便,简单实用。

于是就用这个案例,一个简单的空调控制器来认识一下有限状态机,工作原理直接由状态转移图给出,状态转移图直接由Edraw来画出 。这个空调控制器由Verilog HDL来描述,通过Modelsim进行功能仿真,然后用ISE来综合出RTL Schematic以及Technology Schematic。

用亿图画状态转移图

首先直接给出成品:

感觉还算美观哈。

软件的界面还算美观,直观:

画状态转移图时,选择流程图中的数据流程图,然后点击创建即可,里面的东西一用就会。

空调控制器

简介

下面用Verilog HDL语言描述一个简单的空调控制系统。整个系统由时钟控制,是一个带有异步复位的上升沿触发系统,该控制系统控制空调的三个状态,分别为:well_situated(10)、too_high(00)、too_low(01)。

当空调处于某种状态时,通过输入不同的high和low值控制空调的状态转移,在每种状态下对应不同的输出cold和heat值。

状态转移图如下:

Verilog HDL语言描述

//a simple aircondition control system descripted by Verilog HDL
module aircondition(clk,rst,high,low,heat,cold);input clk,rst,high,low;
output heat,cold;
reg heat,cold;reg [1:0] pr_state,next_state;parameter too_high = 2'b00;
parameter too_low = 2'b01;
parameter well_situated = 2'b10;always@ (posedge clk or posedge rst)
beginif(rst)pr_state <= well_situated;elsepr_state <= next_state;endalways@ (pr_state or high or low) //空调的下一个状态取决于当且状态以及high或low的取值
beginnext_state = 2'bxx;cold = 1'b0; heat = 1'b0;case(pr_state)            //空调的下一个状态取决于当且状态以及high或low的取值well_situated:  //如果当且状态为well_situatedbegincold = 1'b0; heat = 1'b0;if(high == 1'b1)beginnext_state = too_high;cold = 1'b1; heat = 1'b0;endif(low == 1'b1)beginnext_state = too_low;cold = 1'b0;heat =1'b1;endendtoo_high:         //如果当且状态为too_highbegincold = 1'b1; heat = 1'b0;if(high == 1'b1)beginnext_state = too_high;cold = 1'b1;heat = 1'b0;endelsebeginnext_state = well_situated;cold = 1'b0;heat = 1'b0;endendtoo_low:                //如果当前状态为too_lowbegincold = 1'b0;heat = 1'b1;if(low == 1'b1)beginnext_state = too_low;cold = 1'b0;heat = 1'b1;endelsebeginnext_state = well_situated;cold = 1'b0;heat = 1'b0;endenddefault:next_state = well_situated;endcase
endendmodule

测试文件

// 测试文件
`timescale 1ns/1ps
module aircondition_tb;reg clk, rst;
reg [1:0] pr_state, next_state;
reg high,low;
wire cold,heat;//时钟
always
begin#10 clk = ~clk;
endinitial
beginclk = 1'b0;rst = 1'b1;  //复位信号有效,系统复位,当前状态为well_situated90(00),heat=0,cold=0#50 high = 1'b1; low = 1'b0;  //此时处于复位状态,但high = 1, low = 0;#10 rst = 1'b0;     //复位信号无效#50 high = 1'b0; low = 1'b0; #200 high = 1'b1; low = 1'b0; #200 high = 1'b0; low = 1'b1; #200 high = 1'b0; low = 1'b1; endaircondition u1(.clk(clk), .rst(rst), .high(high), .low(low), .heat(heat), .cold(cold));endmodule

仿真图

认真分析下这个仿真波形图,会发现符合状态转移结果,设计成功。

ISE综合

RTL Schematic

展开后

Technology Schematic

情绪有点不好,就这样吧,心里有点难受。

有限状态机设计实例之空调控制器(Verilog HDL语言描述)(仿真与综合)(附用Edraw(亿图)画状态转移图)相关推荐

  1. 模24的8421BCD码计数器(Verilog HDL语言描述)(仿真与综合)

    目录 前言 原理 Verilog HDL程序设计 测试代码 仿真波形图 ISE综合后 RTL Schematic Technology Schematic 前言 本博文用Verilog HDL语言描述 ...

  2. 级联模60计数器(Verilog HDL语言描述)(仿真与综合)

    目录 前言 模60计数器 Verilog HDL语言描述 测试文件 仿真波形 RTL Schematic Technology Schematic 前言 看这篇文章前,推荐先看看模10计数器和模6计数 ...

  3. 通过仿真和综合认识T触发器(Verilog HDL语言描述T触发器)

    这个系列的博文已经写过了两篇,分别是通过仿真和综合认识D触发器(Verilog HDL语言描述D触发器)和通过仿真和综合认识JK触发器(Verilog HDL语言描述JK触发器),分析的方法是完全并行 ...

  4. 通过仿真和综合认识JK触发器(Verilog HDL语言描述JK触发器)

    上篇博文写了用仿真和综合来认识D触发器(通过仿真和综合认识D触发器(Verilog HDL语言描述D触发器)),这篇博文采用完全并行的方式来认识JK触发器. 让我们迅速进入正题吧. J-K触发器的Ve ...

  5. 数字时钟计数器(Verilog HDL语言描述)(仿真和综合)

    目录 前言 主题 Verilog HDL设计代码 测试代码 仿真波形 ISE中综合 RTL Schematic Technology Schematic 前言 数字时钟计数器和我的前一篇博文:级联模6 ...

  6. 通过仿真和综合认识D触发器(Verilog HDL语言描述D触发器)

    目录 前言 硬件语言描述 测试文件 仿真图 综合工具综合后的原理图 综合介绍D触发器 维基百科介绍: 其他来源(课本): 8位的D触发器 Verilog HDL程序设计 测试文件: 仿真波形: 综合工 ...

  7. 模6计数器以及模10计数器(Verilog HDL语言设计)(Modelsim仿真与ISE综合)

    目录 前言 模6计数器 Verilog HDL语言描述 测试文件 仿真电路图 RTL Schematic Technology Schematic 模10计数器 Verilog HDL语言描述 测试文 ...

  8. spwm控制算法c语言实现,采用Verilog HDL语言与DDS技术实现SPWM控制算法的FPGA设计

    其部分程序代码如下: case(state1) A: //初始化状态 begin ADDRES1<=addr1; //时分复用第一路地址 READ_EN<=1′b1; //读使能开 NEX ...

  9. Verilog HDL 语言基础

    目录 前言 一.Verilog HDL模块基本结构 1.模块声明&端口定义&数据类型声明 二.数据类型 1.信号状态 2.整数 2.1.标准形式 2.2.补充 3.实数 4.字符串 三 ...

最新文章

  1. 观点 | 哈哈,TensorFlow被吐槽了吧
  2. 从“IBM刀片服务器广告告别电视”说起
  3. springmvc @PathVariable注解进行传参操作
  4. Linux基本操作指南
  5. 研究生从事学术研究的20条法则:导师错的时候不多!
  6. sihpostreboot关闭没有权限_安卓保护隐私,给APP一次性的权限
  7. python 字符串转换
  8. webclient对reactor-netty的封装
  9. 类中定义接口-匿名内部类
  10. 《power BI 视频7》六合一图表案例
  11. 自然资源部标准地图底图转矢量Shapefile并配准
  12. hp probook fn_如何在HP ProBook(或兼容笔记本电脑)上安装Mac OS X Lion
  13. python3下载m3u8转mp4_Python3爬虫通过m3u8文件下载ts视频 Python爬虫
  14. 专升本C语言习题知识点笔记
  15. c语言中内存分配方式
  16. javaSE开发智能问答机器人项目
  17. Mac OS X 背后的故事(三)Mach之父Avie Tevanian
  18. Hive获取周月时间
  19. 区块链大繁荣背后:我们需要引入「预言机」| 专访DOS团队
  20. 论文解读|2020TPAMI|Deep High-Resolution Representation Learning for Visual Recognition

热门文章

  1. [文档].艾米电子 - 二进制计数器及其变体,Verilog
  2. 顶级Java多线程面试题及回答
  3. java sort算法名称_快速排序算法(Quick Sort)(java)
  4. linux git2.8.0下载,Linux 环境下 jdk1.8 maven3.2.3 Git2.8.0 安装脚本
  5. java 文件md5校验_Java 获取 文件md5校验码
  6. 第十六届智能车竞赛总决赛线上比赛赛道设计
  7. 第一次使用考试宝进行作业练习
  8. 2021年春季学期-信号与系统-第二次作业参考答案-第三小题
  9. pyBoard 基于MicroPython开发STM32FXX单片机
  10. 微波人体感应模块 24G 24.125g 感应开关微波传感器模块