手撕Verilog面试题专题——(3)串并转换

3 串并转换

Verilog代码:

module SerialToParallel(
	input			clk,
	input 			rst,
	input			din,
	output	[7:0]	dout
);
	reg	[7:0]	tmp;
	always@(posedge clk or negedge rst)	begin
		if(!rst)
			tmp	<= 0;
		else
			tmp	<= {tmp[6:0], din};
	end
	assign dout	= tmp;
endmodule

testbench仿真文件:

module SerialToParallel_tb();

	parameter	[15:0]	data = 16'b1010_1101_0101_1011;
	reg				clk;
	reg 			rst;
	reg				din;
	reg		[3:0]	count;
	wire	[7:0]	dout;
	initial begin
		clk = 0;
		rst = 0;
		#10 rst = 1;
	end
	initial begin
		forever #4 clk = ~clk;
	end

	always@(posedge clk or negedge rst)	begin
		if(!rst)	begin
			din		<= 0;
			count	<= 0;
		end
		else	begin
			din		<= data[count];
			count	<= count + 1;
		end
	end
	
	SerialToParallel stp(
	.clk(clk),
	.rst(rst),
	.din(din),
	.dout(dout)
	);
	
endmodule

仿真波形:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值