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

📄 write_sm_rev0.0.v

📁 Verilog jpec coder encoder source code
💻 V
字号:
////////////////////////////////////////////////////
//
//  Module Name: 	write_sm
// 	Descr: 			State Machine to Write to 
// 					FIFO with Two Clock Domains
// 	Author: 		James Rosenthal
// 	Date: 			11/12/04
//
//
// 	Version	Date		Modifications
// 	---------------------------------
// 	0.0		11/12/04	Initial
//
////////////////////////////////////////////////////

`timescale 1ns / 10ps

module write_sm(
	extclk,		// External Clock
	sysclk,		// System Clock
	rst,		// Active Low Reset
	en,			// Write Enable
	din,		// Data input
	dout,		// Data output
	doe,		// Data Ouput Enable
	error		// Invalid Write
	);
	
	// 
	// Inputs & Outputs
	//

	input [12:0] din;	// Data Input	
	input extclk;		// External Clock
	input sysclk;		// System Clock
	input rst;			// Asynchronous Actie Low Reset
	input en;			// Enable State Machine
	
	output [12:0] dout;	// Data Output
	output doe;			// Data Output Enable
	output error;		// Invalid Write

	//
	// Wires & Registers
	//
	reg [12:0] edata;	// Temp Storage for Data (External)
	reg [12:0] sdata;	// Temp Storage for Data (System)
	reg etoggle;		// Toggle bit to verify valid data
	reg stoggle;		// Toggle bit to verify valid data
	reg error;			// Invalid Write
	
	//
	// Behavioral Description
	//
	
	// Latch Data on External Clock
	always @ (posedge extclk or negedge rst)
	begin
		if(!rst)
		begin
			edata <= 12'h0;
			etoggle <= 1'b0;
			error	<= 1'b0;
		end
		else if(en && !ready && etoggle == stoggle)
		begin
			edata <= din;
			etoggle <= !etoggle;
		end
		else if(en) 
			error <= 1'b1;
		else 
			error <= 1'b0;
	end	

	// Double Buffer Data with System Clock
	always @ (posedge sysclk or negedge rst)
	begin
		if(!rst)
		begin
			sdata <= 1'h0;
			doe <= 1'h0;	
			stoggle <= 1'h0;
		end
		else if(stoggle != etoggle)
		begin
			sdata <= edata;
			doe <= 1'b1;
			stoggle <= !stoggle;
		end	
		else
			doe <= 1'b0;
	end
	
endmodule

⌨️ 快捷键说明

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