verilog 红绿灯设计状态机代码不理解

问题描述

verilog 红绿灯设计状态机代码不理解
module sheJiShuRu(
input clk reset Ta Tb clr
output reg [1:0] La Lb
output reg mclk
);

 reg [31:0] count; parameter CLK_COUNT = 249999999; //parameter CLK_COUNT = 24;//模拟用 always @ (posedge clk)  begin    if(clr)    //按下去(为1?)复位     begin      count <= 0;      mclk <= 0;     end   else if(count == CLK_COUNT)    //用到了前面定义的参数     begin      count <= 0;      mclk <= ~mclk;     end    else     count <= count+1;  end reg [1:0] state next_state; parameter S0 = 2'b00; parameter S1 = 2'b01; parameter S2 = 2'b10; parameter S3 = 2'b11; parameter green = 2'b00; parameter yellow = 2'b01; parameter red = 2'b10; always @ (posedge mclk)    if(reset)        state <= S0;    else        state <= next_state; always @(*)    case(state)        S0:             if(Ta) next_state = S0;            else next_state = S1;        S1: next_state = S2;        S2:             if(Tb) next_state = S2;            else next_state = S3;        S3: next_state = S0;    endcasealways @(*)  case(state)        S0:            begin                La = green;                Lb = red;            end        S1:            begin                La = yellow;                Lb = red;            end        S2:            begin                La = red;                Lb = green;            end        S3:            begin                La = red;                Lb = yellow;            end  endcase

endmodule

代码中最开始分频的部分有什么作用

时间: 2024-10-27 16:31:04

verilog 红绿灯设计状态机代码不理解的相关文章

一起谈.NET技术,走向ASP.NET架构设计——第二章:设计/ 测试/代码

再次申明一下:本系列不是讲述TDD的,只是用TDD来建立设计的思想.即便是用DDD,有时候还是结合TDD一起使用的. 开发方式比较 我们用下面的一段分析来引出今天的内容: 想想我们平时是如何在写代码:拿来需求,分析功能,编写功能代码.这样的方式,没有问题,大家也一直沿用很多年了.为了后面描述方便,我们称这种方式为传统流程. TDD的怎么做的: 拿来需求,分析功能,写功能测试代码,编写功能代码.其实两个过程差不多的,真的差不多的. 首先来分析下两种开发流程.个人认为:因为TDD多了一个角色转换的过

走向ASP.NET架构设计第二章:设计/ 测试/代码

再次申明一下:本系列不是讲述TDD的,只是用TDD来建立设计的思想.即便是用DDD,有时候还是结合TDD一起使用的. 开发方式比较 我们用下面的一段分析来引出今天的内容: 想想我们平时是如何在写代码:拿来需求,分析功能,编写功能代码.这样的方式,没有问题,大家也一直沿用很多年了.为了后面描述方便,我们称这种方式为传统流程. TDD的怎么做的: 拿来需求,分析功能,写功能测试代码,编写功能代码.其实两个过程差不多的,真的差不多的. 首先来分析下两种开发流程.个人认为:因为TDD多了一个角色转换的过

argv-初次接触perl脚本,请问下面的代码怎么理解

问题描述 初次接触perl脚本,请问下面的代码怎么理解 #!/usr/local/bin/perl $pattern=$ARGV[0];$count=$pattern=~s/(?<[^>]*>)//g;@ARGV=qw# #;$print='print ""'; 解决方案 #!/usr/local/bin/perl 这句如同*nix操作系统中用来指定脚本解释程序的位置./usr/local/bin/perl是Perl语言的脚本解释器程序.$pattern=$ARGV[

指针-atoi函数代码怎么理解?

问题描述 atoi函数代码怎么理解? int myatoi(const char* sptr) { bool ispnum=true; int ans=0; if(*sptr=='-')//判断是否是负数{ ispnum=false; sptr++; } else if(*sptr=='+')//判断是否为正数{ sptr++; }while(*sptr!='')//类型转化{ ans=ans*10+(*sptr-'0'); sptr++; }if(ispnum) return ans; els

verilog写的分频器代码的含义

问题描述 verilog写的分频器代码的含义 module clk_div(clk,clr,a,b,z,mclk); input clk,clr,a,b; output reg z; output reg mclk; reg [31:0] count; always@(posedge clk) begin if(clr) begin count <= 0; mclk <= 0; end else if(count == 4) begin count <= 0; mclk <= ~m

java中下面这段代码怎么理解?

问题描述 java中下面这段代码怎么理解? class Connection { private static int count = 0; private int i = 0; private Connection() { System.out.println("Connection()");} // Allow creation via static method: static Connection makeConnection() { count++; return new C

android adb-查看adb 源码有小段代码不理解

问题描述 查看adb 源码有小段代码不理解 在查看adb源码的时候,在system/core/adb/adb_client.c下的int adb_connect(const char *service)中有如下代码 if (_adb_server_name) 191 fd = socket_network_client(__adb_server_name, adb_server_port,SOCK_STREAM); 192 else 193 fd = socket_loopback_client

javascript-请问这个JavaScript的去重代码怎么理解?

问题描述 请问这个JavaScript的去重代码怎么理解? function unique(arr){ var obj={}; var uniAfter=[]; for(var i=0;i<arr.length;i++){ if(!obj[arr[i]]){ //()里不理解 uniAfter.push(arr[i]); obj[arr[i]]=1; //这里不理解 } } return uniAfter;} 解决方案 function unique(arr){var obj={};var un

entity-用VHDL或Verilog语言设计RS232接口数据转发协议

问题描述 用VHDL或Verilog语言设计RS232接口数据转发协议 将8位并行数据转发为RS232协议的串口数据发送出去 协议要求: (1) 波特率:4800/ 9600/19200/38400可选 (2) 8位数据位,1位停止位,偶校验可选 给定实体 entity rs232 port ( clk: in std_logic; -- 16MHz输入时钟 rdy: in std_logic; --数据准备好信号, 1个时钟周期的正脉冲 data: in std_logic_vector(7