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

📄 altera_up_rs232_out_serializer.v

📁 Builder uses to integrate a larger system module. Each component consists of a structured set of fi
💻 V
字号:
/***************************************************************************** *                                                                           * * Module:       Altera_UP_RS232_Out_Serializer                              * * Description:                                                              * *      This module writes data to the RS232 UART Port.                      * *                                                                           * *****************************************************************************/module Altera_UP_RS232_Out_Serializer (	// Inputs	clk,	reset,		transmit_data,	transmit_data_en,	// Bidirectionals	// Outputs	fifo_write_space,	serial_data_out);/***************************************************************************** *                           Parameter Declarations                          * *****************************************************************************/parameter BAUD_COUNTER_WIDTH	= 9;parameter BAUD_TICK_INCREMENT	= 9'd1;parameter BAUD_TICK_COUNT		= 9'd433;parameter HALF_BAUD_TICK_COUNT	= 9'd216;parameter TOTAL_DATA_WIDTH		= 11;parameter DATA_WIDTH			= 9;/***************************************************************************** *                             Port Declarations                             * *****************************************************************************/// Inputsinput				clk;input				reset;input		[DATA_WIDTH:1]	transmit_data;input				transmit_data_en;// Bidirectionals// Outputsoutput	reg	[7:0]	fifo_write_space;output	reg			serial_data_out;/***************************************************************************** *                 Internal wires and registers Declarations                 * *****************************************************************************/// Internal Wireswire				shift_data_reg_en;wire				all_bits_transmitted;wire				read_fifo_en;wire				fifo_is_empty;wire				fifo_is_full;wire		[6:0]	fifo_used;wire		[DATA_WIDTH:1]	data_from_fifo;// Internal Registersreg					transmitting_data;reg			[DATA_WIDTH:0]	data_out_shift_reg;// State Machine Registers/***************************************************************************** *                         Finite State Machine(s)                           * *****************************************************************************//***************************************************************************** *                             Sequential logic                              * *****************************************************************************/always @(posedge clk)begin	if (reset == 1'b1)		fifo_write_space <= 8'h00;	else		fifo_write_space <= 8'h80 - {fifo_is_full, fifo_used};endalways @(posedge clk)begin	if (reset == 1'b1)		serial_data_out <= 1'b1;	else		serial_data_out <= data_out_shift_reg[0];endalways @(posedge clk)begin	if (reset == 1'b1)		transmitting_data <= 1'b0;	else if (all_bits_transmitted == 1'b1)		transmitting_data <= 1'b0;	else if (fifo_is_empty == 1'b0)		transmitting_data <= 1'b1;endalways @(posedge clk)begin	if (reset == 1'b1)		data_out_shift_reg	<= {(DATA_WIDTH + 1){1'b1}};	else if (read_fifo_en)		data_out_shift_reg	<= {data_from_fifo, 1'b0};	else if (shift_data_reg_en)		data_out_shift_reg	<= 			{1'b1, data_out_shift_reg[DATA_WIDTH:1]};end/***************************************************************************** *                            Combinational logic                            * *****************************************************************************/assign read_fifo_en = 			~transmitting_data & ~fifo_is_empty & ~all_bits_transmitted;/***************************************************************************** *                              Internal Modules                             * *****************************************************************************/Altera_UP_RS232_Counters RS232_Out_Counters (	// Inputs	.clk						(clk),	.reset						(reset),		.reset_counters				(~transmitting_data),	// Bidirectionals	// Outputs	.baud_clock_rising_edge		(shift_data_reg_en),	.baud_clock_falling_edge	(),	.all_bits_transmitted		(all_bits_transmitted));defparam 	RS232_Out_Counters.BAUD_COUNTER_WIDTH	= BAUD_COUNTER_WIDTH,	RS232_Out_Counters.BAUD_TICK_INCREMENT	= BAUD_TICK_INCREMENT,	RS232_Out_Counters.BAUD_TICK_COUNT		= BAUD_TICK_COUNT,	RS232_Out_Counters.HALF_BAUD_TICK_COUNT	= HALF_BAUD_TICK_COUNT,	RS232_Out_Counters.TOTAL_DATA_WIDTH		= TOTAL_DATA_WIDTH;Altera_UP_SYNC_FIFO RS232_Out_FIFO (	// Inputs	.clk			(clk),	.reset			(reset),	.write_en		(transmit_data_en & ~fifo_is_full),	.write_data		(transmit_data),	.read_en		(read_fifo_en),		// Bidirectionals	// Outputs	.fifo_is_empty	(fifo_is_empty),	.fifo_is_full	(fifo_is_full),	.words_used		(fifo_used),	.read_data		(data_from_fifo));defparam 	RS232_Out_FIFO.DATA_WIDTH	= DATA_WIDTH,	RS232_Out_FIFO.DATA_DEPTH	= 128,	RS232_Out_FIFO.ADDR_WIDTH	= 7;endmodule

⌨️ 快捷键说明

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