「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
相关推荐
daxi1505 分钟前
Verilog入门实战——第5讲:Testbench 仿真编写 + 波形查看与分析
fpga开发
John.Lewis13 分钟前
C++进阶(6)C++11(2)
开发语言·c++·笔记
才知道的19 分钟前
stm32F407学习DAY.27 ADC
stm32·嵌入式硬件·学习
Orange_sparkle27 分钟前
learn claude code学习记录-S02
java·python·学习
小郑加油29 分钟前
python学习Day1:python的安装与环境搭载
python·学习·小白记录,保姆式教程
CheerWWW1 小时前
C++学习笔记——栈内存与堆内存、宏、auto、std::array
c++·笔记·学习
知识分享小能手2 小时前
MongoDB入门学习教程,从入门到精通,在生产环境中设置MongoDB(21)
数据库·学习·mongodb
L.fountain2 小时前
图像自回归生成(Auto-regressive image generation)实战学习(六)
学习·数据挖掘·回归
-许平安-2 小时前
MCP项目笔记十(客户端 MCPClient)
c++·笔记·ai·raii·mcp·pluginapi·plugin system
一只旭宝2 小时前
【C++ 入门精讲2】函数重载、默认参数、函数指针、volatile | 手写笔记(附完整代码)
c++·笔记