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

📄 wb.v

📁 arm10-behavioral的行为仿真代码verilogHDL
💻 V
字号:
/*****************************************************************************$RCSfile: wb.v,v $$Revision: 1.2 $$Author: kohlere $$Date: 2000/02/03 18:16:30 $$State: Exp $$Source: /home/lefurgy/tmp/ISC-repository/isc/hardware/ARM10/behavioral/pipelined/wb.v,v $                Description: This is the Write Back Stage.  It performs all writes to the		register file. *****************************************************************************/module wb(GCLK, nRESET, wb_enbar, base, me_result,		write_Rd_me, write_Rn_me, Rd_me, Rn_me, 		rfw_ena_a, rfw_ena_b, write_a, write_b,		Rd_wb, Rn_wb, write_Rd_wb, write_Rn_wb);/*------------------------------------------------------------------------        Ports------------------------------------------------------------------------*/input	[31:0]	base;			//Value to Write to Baseinput	[31:0]	me_result;		//Value to Write to Rdinput	[4:0]	Rd_me;			//1st Destination Registerinput	[4:0]	Rn_me;			//2nd Destination Registerinput		GCLK;			//Clock Signalinput		nRESET;			//Reset Signalinput		wb_enbar;		//WB Stage Enableinput		write_Rd_me;		//Cond Failed?input		write_Rn_me;		//WB the base?output	[31:0]	write_a;		//A data to RFoutput	[31:0]	write_b;		//B data to RFoutput	[4:0]	Rd_wb;			//Destination Registeroutput	[4:0]	Rn_wb;			//Base Registeroutput		rfw_ena_a;		//Enable Write to Port Aoutput		rfw_ena_b;		//Enable Write to Port Boutput		write_Rd_wb;		//WB the destination?output		write_Rn_wb;		//WB the base?/*------------------------------------------------------------------------        Variable Declarations------------------------------------------------------------------------*///Declare Output of Multiplexers and Regisetersreg	[31:0]	base_reg;		//Base Value to Write Backreg	[31:0]	wb_result;		//Value to Write to Rdreg	[4:0]	Rd_wb;			//1st Destination Registerreg	[4:0]	Rn_wb;			//2nd Destination Registerreg		write_Rd_wb;		//Write to Rd?reg		write_Rn_wb;		//Write to Rn?//Declare Output of Combinational Logicwire	[31:0]	write_a;		//Data to Port Awire	[31:0]	write_b;		//Data to Port Bwire		rfw_ena_a;		//Enable Port Awire		rfw_ena_b;		//Enable Port Bwire		reset_ena;		//Reset the Enable Signal/*------------------------------------------------------------------------        Basic Assignments (Combinational Logic)------------------------------------------------------------------------*/assign write_a = wb_result;assign write_b = base_reg;assign rfw_ena_a = (write_Rd_wb) ? 1'b1 : 1'b0;assign rfw_ena_b = (write_Rn_wb) ? 1'b1 : 1'b0;assign reset_ena = (GCLK & (rfw_ena_a | rfw_ena_b) | !nRESET);/*------------------------------------------------------------------------        Sequential Always Blocks (Registers)------------------------------------------------------------------------*///This block controls the base_reg latchalways @(negedge GCLK or negedge nRESET)    begin        if (!nRESET)            base_reg <= 32'h00000000;        else if (!wb_enbar)            base_reg <= base;    end//This block controls the wb_result latchalways @(negedge GCLK or negedge nRESET)    begin        if (!nRESET)            wb_result <= 32'h00000000;        else if (!wb_enbar)            wb_result <= me_result;    end//This block controls the Rd_wb latchalways @(negedge GCLK or negedge nRESET)    begin        if (!nRESET)            Rd_wb <= 5'h00;        else if (!wb_enbar)            Rd_wb <= Rd_me;    end//This block controls the Rn_wb latchalways @(negedge GCLK or negedge nRESET)    begin        if (!nRESET)            Rn_wb <= 5'h00;               else if (!wb_enbar)            Rn_wb <= Rn_me;        end//This block controls the cond_failed_wb latchalways @(negedge GCLK or posedge reset_ena)    begin        if (reset_ena)            write_Rd_wb <= 1'h0;        else if (wb_enbar)	    write_Rd_wb <= 1'b0;	else if (!wb_enbar)            write_Rd_wb <= write_Rd_me;    end//This block controls the w_wb latchalways @(negedge GCLK or posedge reset_ena)    begin        if (reset_ena)            write_Rn_wb <= 1'h0;        else if (wb_enbar)	    write_Rn_wb <= 1'h0;	else if (!wb_enbar)            write_Rn_wb <= write_Rn_me;    end/*======================================================================*/endmodule       //wb/*======================================================================*/

⌨️ 快捷键说明

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