「Verilog学习笔记」状态机与时钟分频

专栏前言

本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网

状态机写法

`timescale 1ns/1ns

module huawei7(
	input wire clk  ,
	input wire rst  ,
	output reg clk_out
);

//*************code***********//
	parameter S0 = 0, S1 = 1 , S2 = 2 , S3 = 3 ; 
	reg [2:0] state, nstate ; 

	always @ (posedge clk or negedge rst) 
		if (~rst) state <= 0 ; 
		else state <= nstate ; 

	always @ (*) 
		case (state) 
			S0 : nstate = S1 ; 
			S1 : nstate = S2 ; 
			S2 : nstate = S3 ; 
			S3 : nstate = S0 ; 
			default : nstate = S0 ; 
		endcase

	always @ (posedge clk or negedge rst) 
		if (!rst) clk_out <= 0 ; 
		else if (state == S0) clk_out <= 1 ; 
		else clk_out <= 0 ; 


//*************code***********//
endmodule

不用状态机的写法

`timescale 1ns/1ns

module huawei7(
	input wire clk  ,
	input wire rst  ,
	output reg clk_out
);

//*************code***********//
	reg [2:0] cnt ; 

	always @ (posedge clk or negedge rst) 
		if (!rst) cnt <= 0 ; 
		else cnt <= cnt == 3 ? 0 : cnt + 1 ; 

	always @ (posedge clk or negedge rst) 
		if (!rst) clk_out <= 0 ; 
		else if (cnt == 0) clk_out <= 1 ; 
		else clk_out <= 0 ; 


//*************code***********//
endmodule
相关推荐
eybk4 小时前
Pytorch+Mumu模拟器+萤石摄像头实现对小孩学习的监控
学习
6.944 小时前
Scala学习记录 递归调用 练习
开发语言·学习·scala
Aileen_0v04 小时前
【AI驱动的数据结构:包装类的艺术与科学】
linux·数据结构·人工智能·笔记·网络协议·tcp/ip·whisper
守护者1705 小时前
JAVA学习-练习试用Java实现“使用Arrays.toString方法将数组转换为字符串并打印出来”
java·学习
学会沉淀。6 小时前
Docker学习
java·开发语言·学习
Rinai_R6 小时前
计算机组成原理的学习笔记(7)-- 存储器·其二 容量扩展/多模块存储系统/外存/Cache/虚拟存储器
笔记·物联网·学习
吃着火锅x唱着歌6 小时前
PHP7内核剖析 学习笔记 第四章 内存管理(1)
android·笔记·学习
ragnwang6 小时前
C++ Eigen常见的高级用法 [学习笔记]
c++·笔记·学习
周湘zx6 小时前
项目三:信号源的FPGA实现
fpga开发
胡西风_foxww7 小时前
【es6复习笔记】rest参数(7)
前端·笔记·es6·参数·rest