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

📄 regfile.v

📁 arm9_fpga2_verilog是一个可以综合的用verilog写的arm9的ip软核
💻 V
字号:
`timescale 1ns/10ps/*****************************************************************************$RCSfile: regfile.v,v $$Revision: 1.3 $$Author: kohlere $$Date: 2000/03/30 01:10:49 $$State: Exp $$Source: /home/lefurgy/tmp/ISC-repository/isc/hardware/ARM10/behavioral/pipelined/fpga2/regfile.v,v $Description: Register File, 31, 32-bit registers (ff's).  Would like		to use SRAM, but we still don't have the damn memory		generators.*****************************************************************************/module regfile (nGCLK, nWAIT,		  nRESET, index_a, index_b, write_a, write_b, wena_a,		  wena_b, w_addr_a, w_addr_b, port_a, port_b, pc_if);/*------------------------------------------------------------------------        Ports------------------------------------------------------------------------*/input 	[31:0]	write_a;		//Data on Write Port Ainput	[31:0]	write_b;		//Data on Write Port Binput	[31:0]	pc_if;			//PC Valueinput	[4:0]	index_a;		//Read Index Ainput	[4:0]	index_b;		//Read Index Binput	[4:0]	w_addr_a;		//Write Index Ainput	[4:0]	w_addr_b;		//Write Index Binput		nGCLK;			//Clockinput		nRESET;			//Reset Signalinput		nWAIT;			//Clock Enableinput		wena_a;			//Write Enable Ainput		wena_b;			//Write Enable Boutput	[31:0]	port_a;			//Read Port Aoutput	[31:0]	port_b;			//Read Port B	/*------------------------------------------------------------------------        Signal Declarations------------------------------------------------------------------------*/reg     [31:0]  r0, r1, r2, r3,         //Declare 31, 32-bit registers                r4, r5, r6, r7,                r8, r9, r10, r11,                r12, r13, r14,                r16, r17, r18, r19,                r20, r21, r22, r23,                r24, r25, r26, r27,                r28, r29, r30;reg	[31:0]	port_a, port_b;//Create the two Read Port Muxesalways @(index_a or index_b or r0 or r1 or r2 or r3                or r4 or r5 or r6 or r7 or r8 or r9                or r10 or r11 or r12 or r13 or r14                or r16 or r17 or r18 or r19 or pc_if                or r20 or r21 or r22 or r23 or r24                or r25 or r26 or r27 or r28 or r29                or r30)    begin        case (index_a) //synopsys parallel_case            5'h00:  port_a = r0;              5'h01:  port_a = r1;              5'h02:  port_a = r2;              5'h03:  port_a = r3;              5'h04:  port_a = r4;              5'h05:  port_a = r5;             5'h06:  port_a = r6;             5'h07:  port_a = r7;             5'h08:  port_a = r8;             5'h09:  port_a = r9;             5'h0A:  port_a = r10;            5'h0B:  port_a = r11;            5'h0C:  port_a = r12;            5'h0D:  port_a = r13;            5'h0E:  port_a = r14;            5'h0F:  port_a = pc_if;            5'h10:  port_a = r16;            5'h11:  port_a = r17;            5'h12:  port_a = r18;            5'h13:  port_a = r19;               5'h14:  port_a = r20;             5'h15:  port_a = r21;            5'h16:  port_a = r22;            5'h17:  port_a = r23;            5'h18:  port_a = r24;            5'h19:  port_a = r25;            5'h1A:  port_a = r26;            5'h1B:  port_a = r27;  	    5'h1C:  port_a = r28;            5'h1D:  port_a = r29;            5'h1E:  port_a = r30;            default: port_a = r0;    endcase        case (index_b) //synopsys parallel_case            5'h00:  port_b = r0;              5'h01:  port_b = r1;              5'h02:  port_b = r2;              5'h03:  port_b = r3;             5'h04:  port_b = r4;             5'h05:  port_b = r5;             5'h06:  port_b = r6;             5'h07:  port_b = r7;             5'h08:  port_b = r8;             5'h09:  port_b = r9;             5'h0A:  port_b = r10;            5'h0B:  port_b = r11;            5'h0C:  port_b = r12;            5'h0D:  port_b = r13;            5'h0E:  port_b = r14;            5'h0F:  port_b = pc_if;            5'h10:  port_b = r16;            5'h11:  port_b = r17;               5'h12:  port_b = r18;             5'h13:  port_b = r19;            5'h14:  port_b = r20;            5'h15:  port_b = r21;            5'h16:  port_b = r22;            5'h17:  port_b = r23;            5'h18:  port_b = r24;            5'h19:  port_b = r25;            5'h1A:  port_b = r26;            5'h1B:  port_b = r27;            5'h1C:  port_b = r28;            5'h1D:  port_b = r29;            5'h1E:  port_b = r30;            default: port_b = r0;        endcase    end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r0 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h00) & (wena_a))          r0 <= #1 write_a;        else if ((w_addr_b == 5'h00) & (wena_b))          r0 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET" always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r1 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h01) & (wena_a))          r1 <= #1 write_a;        else if ((w_addr_b == 5'h01) & (wena_b))          r1 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r2 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h02) & (wena_a))          r2 <= #1 write_a;        else if ((w_addr_b == 5'h02) & (wena_b))          r2 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r3 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h03) & (wena_a))          r3 <= #1 write_a;        else if ((w_addr_b == 5'h03) & (wena_b))          r3 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r4 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h04) & (wena_a))          r4 <= #1 write_a;        else if ((w_addr_b == 5'h04) & (wena_b))          r4 <= #1 write_b;      endend//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r5 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h05) & (wena_a))          r5 <= #1 write_a;        else if ((w_addr_b == 5'h05) & (wena_b))          r5 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r6 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h06) & (wena_a))          r6 <= #1 write_a;        else if ((w_addr_b == 5'h06) & (wena_b))          r6 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r7 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h07) & (wena_a))          r7 <= #1 write_a;        else if ((w_addr_b == 5'h07) & (wena_b))          r7 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r8 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h08) & (wena_a))          r8 <= #1 write_a;        else if ((w_addr_b == 5'h08) & (wena_b))          r8 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r9 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h09) & (wena_a))          r9 <= #1 write_a;        else if ((w_addr_b == 5'h09) & (wena_b))          r9 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r10 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h0A) & (wena_a))          r10 <= #1 write_a;        else if ((w_addr_b == 5'h0A) & (wena_b))          r10 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r11 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h0B) & (wena_a))          r11 <= #1 write_a;        else if ((w_addr_b == 5'h0B) & (wena_b))          r11 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r12 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h0C) & (wena_a))          r12 <= #1 write_a;        else if ((w_addr_b == 5'h0C) & (wena_b))          r12 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r13 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h0D) & (wena_a))          r13 <= #1 write_a;        else if ((w_addr_b == 5'h0D) & (wena_b))          r13 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r14 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h0E) & (wena_a))          r14 <= #1 write_a;        else if ((w_addr_b == 5'h0E) & (wena_b))          r14 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r16 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h10) & (wena_a))          r16 <= #1 write_a;        else if ((w_addr_b == 5'h10) & (wena_b))          r16 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r17 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h11) & (wena_a))          r17 <= #1 write_a;        else if ((w_addr_b == 5'h11) & (wena_b))          r17 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r18 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h12) & (wena_a))          r18 <= #1 write_a;        else if ((w_addr_b == 5'h12) & (wena_b))          r18 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r19 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h13) & (wena_a))          r19 <= #1 write_a;        else if ((w_addr_b == 5'h13) & (wena_b))          r19 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r20 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h14) & (wena_a))          r20 <= #1 write_a;        else if ((w_addr_b == 5'h14) & (wena_b))          r20 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r21 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h15) & (wena_a))          r21 <= #1 write_a;        else if ((w_addr_b == 5'h15) & (wena_b))          r21 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r22 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h16) & (wena_a))          r22 <= #1 write_a;        else if ((w_addr_b == 5'h16) & (wena_b))          r22 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r23 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h17) & (wena_a))          r23 <= #1 write_a;        else if ((w_addr_b == 5'h17) & (wena_b))          r23 <= #1 write_b;      endend//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r24 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h18) & (wena_a))          r24 <= #1 write_a;        else if ((w_addr_b == 5'h18) & (wena_b))          r24 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r25 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h19) & (wena_a))          r25 <= #1 write_a;        else if ((w_addr_b == 5'h19) & (wena_b))          r25 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r26 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h1A) & (wena_a))          r26 <= #1 write_a;        else if ((w_addr_b == 5'h1A) & (wena_b))          r26 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r27 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h1B) & (wena_a))          r27 <= #1 write_a;        else if ((w_addr_b == 5'h1B) & (wena_b))          r27 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r28 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h1C) & (wena_a))          r28 <= #1 write_a;        else if ((w_addr_b == 5'h1C) & (wena_b))          r28 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r29 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h1D) & (wena_a))          r29 <= #1 write_a;        else if ((w_addr_b == 5'h1D) & (wena_b))          r29 <= #1 write_b;      end  end//synopsys async_set_reset "nRESET"always @(posedge nGCLK or negedge nRESET)  begin    if (~nRESET)      r30 <= #1 32'h0;    else if (nWAIT)      begin        if ((w_addr_a == 5'h1E) & (wena_a))          r30 <= #1 write_a;        else if ((w_addr_b == 5'h1E) & (wena_b))          r30 <= #1 write_b;      end  endendmodule

⌨️ 快捷键说明

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