循环序列生成与并串转换模块设计

编写一个模块,实现循环输出序列001011。

复制代码
`timescale 1ns/1ns

module sequence_generator(
	input clk,
	input rst_n,
	output reg data
	);

reg [5:0] data_gen;

always@(posedge clk or negedge rst_n) begin
	if(!rst_n) begin
		data_gen <= 6'b001011;
	end
	else begin
		data_gen <= {data_gen[4:0],data_gen[5]};
	end
end

always@(posedge clk or negedge rst_n) begin
	if(!rst_n) begin
		data <= 'd0;
	end
	else begin
		data <= data_gen[5];
	end
end


endmodule

设计一个模块进行并串转换,要求每四位d输为转到一位dout输出,输出valid_in表示此时的输入有效

信号示意图:

clk为时钟

rst为低电平复位

valid_in 表示输入有效

d 信号输入

dout 信号输出

波形示意图:

复制代码
`timescale 1ns/1ns
module huawei5(
	input wire clk  ,
	input wire rst  ,
	input wire [3:0]d ,
	output wire valid_in ,
	output wire dout
	);

//*************code***********//
reg [3:0] d_reg;
reg                 valid;
reg [1:0] cnt;

always@(posedge clk or negedge rst) begin
	if(!rst) begin
		cnt <= 'd0;
	end
	else if(cnt == 'd3) begin
		cnt <= 'd0;
	end
	else cnt <= cnt + 'd1;
end


always@(posedge clk or negedge rst) begin
	if(!rst) begin
		d_reg <= 'd0;
	end
	else if(cnt == 'd3) begin
		d_reg <= d;
	end
	else begin
		d_reg <= d_reg << 1;
	end
end

always@(posedge clk or negedge rst) begin
	if(!rst) begin
		valid <= 'd0;
	end
	else if(cnt == 'd3) begin
		valid <= 'd1;
	end
	else valid <= 'd0;
end

assign   valid_in = valid;
assign   dout     = d_reg[3];
 


//*************code***********//

endmodule
相关推荐
wp123_16 小时前
磁式编码器技术特性与场景优势分析,医疗机器人领域应用展望
科技·硬件工程
恒锐丰科技林技术员8 小时前
EG1164 高压大电流升压同步整流芯片解析
经验分享·嵌入式硬件·硬件工程
恒锐丰科技林技术员1 天前
EG2184 半桥栅极驱动芯片详解:高压半桥电路的性价比之选
经验分享·嵌入式硬件·硬件工程
ysu_03142 天前
TinyML 模型部署:从 Edge Impulse 到 STM32F103
驱动开发·stm32·嵌入式硬件·mcu·硬件架构·硬件工程·dsp开发
恒锐丰科技林技术员2 天前
EG1196S:高压宽输入降压 DC‑DC 芯片,电动车工业电源的优选方案
经验分享·嵌入式硬件·硬件工程
深圳市恒锐丰科技杨生2 天前
EG2121 250V 单路半桥栅极驱动芯片|屹晶 EGmicro
嵌入式硬件·硬件工程
深圳市恒锐丰科技杨生2 天前
EG1165 / EG1165S 600V 半桥 PWM 控制芯片|屹晶 EGmicro
嵌入式硬件·硬件工程
不会声调的博er2 天前
AD16 在 PCB 中修改网络级焊盘颜色
硬件架构·硬件工程·pcb工艺
智者知已应修善业3 天前
【4060BD_5V应用电路图】2022-12-24
驱动开发·经验分享·笔记·硬件架构·硬件工程