Download: srisc1a.zip
srisc1.v
module srisc1(clock,pc,data,reset,da,db,dc,ra,rb,rc,write_enable); input clock,reset; output [7:0] pc; output [31:0] data; output [31:0] da,db; input [31:0] dc; input [4:0] ra,rb,rc; input write_enable; reg [7:0] pc; // instantiate memory inst inst_cache( .address(pc), .clock(clock), .q(data) ); // instantiate register file reg_file regs( .clock(clock), .reset(reset), .da(da), .db(db), .dc(dc), .ra(ra), .rb(rb), .rc(rc), .write_enable(write_enable) ); always @(posedge clock) begin pc <= pc + 8'h01; end endmodule
inst.v
// megafunction wizard: %ROM: 1-PORT% // GENERATION: STANDARD // VERSION: WM1.0 // MODULE: altsyncram // ============================================================ // File Name: inst.v // Megafunction Name(s): // altsyncram // ============================================================ // ************************************************************ // THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! // // 6.0 Build 178 04/27/2006 SJ Full Version // ************************************************************ //Copyright (C) 1991-2006 Altera Corporation //Your use of Altera Corporation's design tools, logic functions //and other software and tools, and its AMPP partner logic //functions, and any output files any of the foregoing //(including device programming or simulation files), and any //associated documentation or information are expressly subject //to the terms and conditions of the Altera Program License //Subscription Agreement, Altera MegaCore Function License //Agreement, or other applicable license agreement, including, //without limitation, that your use is for the sole purpose of //programming logic devices manufactured by Altera and sold by //Altera or its authorized distributors. Please refer to the //applicable agreement for further details. // synopsys translate_off `timescale 1 ps / 1 ps // synopsys translate_on module inst ( address, clock, q); input [7:0] address; input clock; output [31:0] q; wire [31:0] sub_wire0; wire [31:0] q = sub_wire0[31:0]; altsyncram altsyncram_component ( .clock0 (clock), .address_a (address), .q_a (sub_wire0), .aclr0 (1'b0), .aclr1 (1'b0), .address_b (1'b1), .addressstall_a (1'b0), .addressstall_b (1'b0), .byteena_a (1'b1), .byteena_b (1'b1), .clock1 (1'b1), .clocken0 (1'b1), .clocken1 (1'b1), .data_a ({32{1'b1}}), .data_b (1'b1), .q_b (), .rden_b (1'b1), .wren_a (1'b0), .wren_b (1'b0)); defparam altsyncram_component.clock_enable_input_a = "BYPASS", altsyncram_component.clock_enable_output_a = "BYPASS", altsyncram_component.init_file = "program.mif", altsyncram_component.intended_device_family = "Cyclone II", altsyncram_component.lpm_hint = "ENABLE_RUNTIME_MOD=NO", altsyncram_component.lpm_type = "altsyncram", altsyncram_component.numwords_a = 256, altsyncram_component.operation_mode = "ROM", altsyncram_component.outdata_aclr_a = "NONE", altsyncram_component.outdata_reg_a = "UNREGISTERED", altsyncram_component.widthad_a = 8, altsyncram_component.width_a = 32, altsyncram_component.width_byteena_a = 1; endmodule // ============================================================ // CNX file retrieval info // ============================================================ // Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0" // Retrieval info: PRIVATE: AclrAddr NUMERIC "0" // Retrieval info: PRIVATE: AclrByte NUMERIC "0" // Retrieval info: PRIVATE: AclrOutput NUMERIC "0" // Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "0" // Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8" // Retrieval info: PRIVATE: BlankMemory NUMERIC "0" // Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0" // Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0" // Retrieval info: PRIVATE: Clken NUMERIC "0" // Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0" // Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A" // Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0" // Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone II" // Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0" // Retrieval info: PRIVATE: JTAG_ID STRING "NONE" // Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0" // Retrieval info: PRIVATE: MIFfilename STRING "program.mif" // Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "256" // Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0" // Retrieval info: PRIVATE: RegAddr NUMERIC "1" // Retrieval info: PRIVATE: RegOutput NUMERIC "0" // Retrieval info: PRIVATE: SingleClock NUMERIC "1" // Retrieval info: PRIVATE: UseDQRAM NUMERIC "0" // Retrieval info: PRIVATE: WidthAddr NUMERIC "8" // Retrieval info: PRIVATE: WidthData NUMERIC "32" // Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS" // Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS" // Retrieval info: CONSTANT: INIT_FILE STRING "program.mif" // Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone II" // Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO" // Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram" // Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "256" // Retrieval info: CONSTANT: OPERATION_MODE STRING "ROM" // Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE" // Retrieval info: CONSTANT: OUTDATA_REG_A STRING "UNREGISTERED" // Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "8" // Retrieval info: CONSTANT: WIDTH_A NUMERIC "32" // Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1" // Retrieval info: USED_PORT: address 0 0 8 0 INPUT NODEFVAL address[7..0] // Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock // Retrieval info: USED_PORT: q 0 0 32 0 OUTPUT NODEFVAL q[31..0] // Retrieval info: CONNECT: @address_a 0 0 8 0 address 0 0 8 0 // Retrieval info: CONNECT: q 0 0 32 0 @q_a 0 0 32 0 // Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0 // Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all // Retrieval info: GEN_FILE: TYPE_NORMAL inst.v TRUE // Retrieval info: GEN_FILE: TYPE_NORMAL inst.inc FALSE // Retrieval info: GEN_FILE: TYPE_NORMAL inst.cmp FALSE // Retrieval info: GEN_FILE: TYPE_NORMAL inst.bsf FALSE // Retrieval info: GEN_FILE: TYPE_NORMAL inst_inst.v FALSE // Retrieval info: GEN_FILE: TYPE_NORMAL inst_bb.v TRUE
reg_file.v
module reg_file(clock,reset,da,db,dc,ra,rb,rc,write_enable); parameter BITS = 32; input [BITS-1:0] dc; output [BITS-1:0] da,db; input [4:0] ra,rb,rc; input clock, write_enable, reset; reg [BITS-1:0] r[1:31]; integer i; always @(posedge clock or negedge reset) begin if (!reset) for (i=1; i<32; i=i+1) r[i] = i; else if (write_enable && rc) r[rc] = dc; end assign da = (ra? r[ra]: 0); assign db = (rb? r[rb]: 0); endmodule
program.mif
DEPTH = 256; WIDTH = 32; ADDRESS_RADIX = HEX; DATA_RADIX = HEX; CONTENTS BEGIN [0..ff] : 0; 0000 : 00800284; 0001 : 00c00384; 0002 : 1889c83a; 0003 : 018002c4; 0004 : 01c00184; 0005 : 1911883a; 0006 : 3a13883a; 0007 : 4251c83a; 0008 : 424000c4; 0009 : 10c8703a; 000a : 10cab03a; 000b : 10cc303a; 000c : 10cef03a; 000d : 12000fcc; 000e : 003fff06; 000f : f800283a; 0010 : 01000034; 0011 : 21018904; 0012 : 01800034; 0013 : 31818904; 0014 : deffff04; 0015 : 310dc83a; 0016 : 000b883a; 0017 : dfc00015; 0018 : 00000b00;
fit.summary
Fitter Status : Successful - Tue Jul 17 15:19:49 2007 Quartus II Version : 6.0 Build 178 04/27/2006 SJ Full Version Revision Name : srisc1 Top-level Entity Name : srisc1 Family : Cyclone II Device : EP2C35F672C6 Timing Models : Final Total logic elements : 1,402 / 33,216 ( 4 % ) Total registers : 1000 Total pins : 154 / 475 ( 32 % ) Total virtual pins : 0 Total memory bits : 8,192 / 483,840 ( 2 % ) Embedded Multiplier 9-bit elements : 0 / 70 ( 0 % ) Total PLLs : 0 / 4 ( 0 % )
tan.summary
-------------------------------------------------------------------------------------- Timing Analyzer Summary -------------------------------------------------------------------------------------- Type : Worst-case tsu Slack : N/A Required Time : None Actual Time : 9.794 ns From : write_enable To : reg_file:regs|r[14][22] From Clock : -- To Clock : clock Failed Paths : 0 Type : Worst-case tco Slack : N/A Required Time : None Actual Time : 16.799 ns From : reg_file:regs|r[10][12] To : db[12] From Clock : clock To Clock : -- Failed Paths : 0 Type : Worst-case tpd Slack : N/A Required Time : None Actual Time : 20.571 ns From : ra[3] To : da[19] From Clock : -- To Clock : -- Failed Paths : 0 Type : Worst-case th Slack : N/A Required Time : None Actual Time : -3.458 ns From : dc[5] To : reg_file:regs|r[23][5] From Clock : -- To Clock : clock Failed Paths : 0 Type : Clock Setup: 'clock' Slack : N/A Required Time : None Actual Time : Restricted to 260.01 MHz ( period = 3.846 ns ) From : pc[6]~reg0 To : inst:inst_cache|altsyncram:altsyncram_component|altsyncram_gv71:auto_generated|ram_block1a0~porta_address_reg6 From Clock : clock To Clock : clock Failed Paths : 0 Type : Total number of failed paths Slack : Required Time : Actual Time : From : To : From Clock : To Clock : Failed Paths : 0 --------------------------------------------------------------------------------------
Maintained by John Loomis, last updated Tue Jul 17 15:20:56 2007