⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serialrxmanager.v

📁 A serial receiver manager for digital oscilloscope
💻 V
字号:
//******************************************************************************
//SerialRxManager	-	Module to handle input from serial port to parallel
//							representation for other modules
//						Input bytes are divided into to nibbles:
//							rx_data[7:4]	- Address nibble
//							rx_data[3:0]	- Data nibble
//						This makes for 16 addressable sets of registers, each 4
//							bits wide, or 8 bytes.
//						Uses the asynchronous serial receiver module 
//******************************************************************************


module SerialRxManager(rx, outdata, clk);
	input	rx;
	output	[63:0] outdata;
	input	clk;

	wire	data_ready;
	wire	[7:0] rx_data;

	reg	[3:0] mem [15:0];

	async_receiver (.clk(clk), .RxD(rx), .RxD_data_ready(data_ready),
			.RxD_data(rx_data));

	always @ (posedge clk) begin
		if (data_ready) begin
			mem[rx_data[7:4]] <= rx_data[3:0];
		end
	end

	assign outdata[3:0] = mem[0];
	assign outdata[7:4] = mem[1];
	assign outdata[11:8] = mem[2];
	assign outdata[15:12] = mem[3];
	assign outdata[19:16] = mem[4];
	assign outdata[23:20] = mem[5];
	assign outdata[27:24] = mem[6];
	assign outdata[31:28] = mem[7];
	assign outdata[35:32] = mem[8];
	assign outdata[39:36] = mem[9];
	assign outdata[43:40] = mem[10];
	assign outdata[47:44] = mem[11];
	assign outdata[51:48] = mem[12];
	assign outdata[55:52] = mem[13];
	assign outdata[59:56] = mem[14];
	assign outdata[63:60] = mem[15];
endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -