「Verilog学习笔记」整数倍数据位宽转换8to16

专栏前言

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

根据时序图,数据是在第二个数据到来之后输出,当仅有一个数据到来时,不产生输出,所以内部需要一个指示信号valid_cnt,用来指示数据缓存状态。当data_lock内已缓存第一个数据时,valid_cnt拉高,当第二个数据到来后valid_cnt拉低

复制代码
`timescale 1ns/1ns

module width_8to16(
	input 				   clk 		,   
	input 				   rst_n		,
	input				      valid_in	,
	input	   [7:0]		   data_in	,
 
 	output	reg			valid_out,
	output   reg [15:0]	data_out
);
	reg [7:0] data_lock ; 
	reg valid_cnt ; 

	always @ (posedge clk or negedge rst_n) begin 
		if (~rst_n) valid_cnt <= 'd0 ; 
		else if (valid_in) valid_cnt <= ~valid_cnt ; 
	end

	always @ (posedge clk or negedge rst_n) begin 
		if (~rst_n) data_lock <= 'd0 ; 
		else if (valid_in && !valid_cnt) data_lock <= data_in ; 
	end

	always @ (posedge clk or negedge rst_n) begin 
		if (~rst_n) valid_out <= 'd0 ; 
		else if (valid_in && valid_cnt == 1'd1) valid_out <= 1'd1 ; 
		else valid_out <= 'd0 ; 
	end

	always @ (posedge clk or negedge rst_n) begin 
		if (~rst_n) data_out <= 'd0 ; 
		else if (valid_in && valid_cnt == 1'd1) data_out <= {data_lock, data_in} ; 
	end

endmodule
相关推荐
weixin_4093831231 分钟前
godot碰撞测试的学习
学习·游戏引擎·godot
mo_alo31 分钟前
Everything Claude Code 完全指南:给 Claude Code 装上涡轮增压【安装和使用超详细教程!!!】
笔记·embedding·ai编程·claude·ecc
电子云与长程纠缠36 分钟前
Godot学习06 - AnimationPlayer内置动画
学习·游戏引擎·godot
山塘小鱼儿42 分钟前
LangGraph生成小红书书评(学习)
学习·大模型·langgraph
kyq___42 分钟前
环路稳定性补偿学习笔记
笔记·学习
CyrusCJA1 小时前
日语零基础每天学习笔记【11-20】
笔记·学习
oi..1 小时前
Flag入门—Flag在返回包中
网络·笔记·测试工具·安全·网络安全
职豚求职小程序1 小时前
[特殊字符]京东笔试在线系统练习笔试题库更新版本
笔记
NULL指向我1 小时前
信号处理学习笔记2:软件RC二阶高通\低通滤波
笔记·学习·信号处理
左左右右左右摇晃2 小时前
ConcurrentHashMap ——put + get
java·开发语言·笔记