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

📄 ufm.v

📁 这个是专门用在ALtera第二代PLD MAXII上的16位微处理器IP核
💻 V
📖 第 1 页 / 共 2 页
字号:
	initial
		dffe8a[5:5] = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (add_en == 1'b1)   dffe8a[5:5] <= wire_dffe8a_D[5:5];
	// synopsys translate_off
	initial
		dffe8a[6:6] = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (add_en == 1'b1)   dffe8a[6:6] <= wire_dffe8a_D[6:6];
	// synopsys translate_off
	initial
		dffe8a[7:7] = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (add_en == 1'b1)   dffe8a[7:7] <= wire_dffe8a_D[7:7];
	// synopsys translate_off
	initial
		dffe8a[8:8] = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (add_en == 1'b1)   dffe8a[8:8] <= wire_dffe8a_D[8:8];
	assign
		wire_dffe8a_D = {Z_var};
	// synopsys translate_off
	initial
		dffe9a0 = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (in_read_data_en == 1'b1)   dffe9a0 <= ufm_drdout;
	// synopsys translate_off
	initial
		dffe9a1 = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (in_read_data_en == 1'b1)   dffe9a1 <= sipo_q[0:0];
	// synopsys translate_off
	initial
		dffe9a2 = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (in_read_data_en == 1'b1)   dffe9a2 <= sipo_q[1:1];
	// synopsys translate_off
	initial
		dffe9a3 = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (in_read_data_en == 1'b1)   dffe9a3 <= sipo_q[2:2];
	// synopsys translate_off
	initial
		dffe9a4 = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (in_read_data_en == 1'b1)   dffe9a4 <= sipo_q[3:3];
	// synopsys translate_off
	initial
		dffe9a5 = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (in_read_data_en == 1'b1)   dffe9a5 <= sipo_q[4:4];
	// synopsys translate_off
	initial
		dffe9a6 = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (in_read_data_en == 1'b1)   dffe9a6 <= sipo_q[5:5];
	// synopsys translate_off
	initial
		dffe9a7 = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (in_read_data_en == 1'b1)   dffe9a7 <= sipo_q[6:6];
	// synopsys translate_off
	initial
		dffe9a8 = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (in_read_data_en == 1'b1)   dffe9a8 <= sipo_q[7:7];
	// synopsys translate_off
	initial
		dffe9a9 = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (in_read_data_en == 1'b1)   dffe9a9 <= sipo_q[8:8];
	// synopsys translate_off
	initial
		dffe9a10 = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (in_read_data_en == 1'b1)   dffe9a10 <= sipo_q[9:9];
	// synopsys translate_off
	initial
		dffe9a11 = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (in_read_data_en == 1'b1)   dffe9a11 <= sipo_q[10:10];
	// synopsys translate_off
	initial
		dffe9a12 = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (in_read_data_en == 1'b1)   dffe9a12 <= sipo_q[11:11];
	// synopsys translate_off
	initial
		dffe9a13 = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (in_read_data_en == 1'b1)   dffe9a13 <= sipo_q[12:12];
	// synopsys translate_off
	initial
		dffe9a14 = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (in_read_data_en == 1'b1)   dffe9a14 <= sipo_q[13:13];
	// synopsys translate_off
	initial
		dffe9a15 = 0;
	// synopsys translate_on
	always @ ( posedge ufm_osc)
		if (in_read_data_en == 1'b1)   dffe9a15 <= sipo_q[14:14];
	// synopsys translate_off
	initial
		wire_cntr5_q_int = 0;
	// synopsys translate_on
	always @(posedge wire_cntr5_clock)
			if ( wire_cntr5_clk_en == 1'b1)
					if (wire_cntr5_q_int[4:0] == 5'd27)
						wire_cntr5_q_int <= 5'b0;
					else
						wire_cntr5_q_int <= wire_cntr5_q_int[4:0] + 1'b1;
	assign
		wire_cntr5_q = wire_cntr5_q_int[4:0];
	assign
		wire_cntr5_clk_en = tmp_decode,
		wire_cntr5_clock = ufm_osc;
	maxii_ufm   maxii_ufm_block1
	( 
	.arclk(ufm_arclk),
	.ardin(ufm_ardin),
	.arshft(ufm_arshft),
	.bgpbusy(wire_maxii_ufm_block1_bgpbusy),
	.busy(),
	.drclk(ufm_drclk),
	.drdin(ufm_drdin),
	.drdout(wire_maxii_ufm_block1_drdout),
	.drshft(ufm_drshft),
	.osc(wire_maxii_ufm_block1_osc),
	.oscena(ufm_oscena)
	`ifdef FORMAL_VERIFICATION
	`else
	// synopsys translate_off
	`endif
	,
	.erase(1'b0),
	.program(1'b0)
	`ifdef FORMAL_VERIFICATION
	`else
	// synopsys translate_on
	`endif
	// synopsys translate_off
	,
	.ctrl_bgpbusy(),
	.devclrn(),
	.devpor(),
	.sbdin(),
	.sbdout()
	// synopsys translate_on
	);
	defparam
		maxii_ufm_block1.address_width = 9,
		maxii_ufm_block1.init_file = "TEST.MIF",
		maxii_ufm_block1.mem1 = 512'h200A20027FED000F2C0000010E0128000001B06B260000082C0000032480B027B04E3D006D705465B012B07726000010B056B04E2C080001240420062700007F,
		maxii_ufm_block1.mem10 = 512'h00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
		maxii_ufm_block1.mem11 = 512'h00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
		maxii_ufm_block1.mem12 = 512'h00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
		maxii_ufm_block1.mem13 = 512'h00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
		maxii_ufm_block1.mem14 = 512'h00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
		maxii_ufm_block1.mem15 = 512'h00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
		maxii_ufm_block1.mem16 = 512'h00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
		maxii_ufm_block1.mem2 = 512'h200D200D200D200D200A200420002404F0002000200A20087FEC000F2008B04950040CFF3000B04D200C200C200C200C200C200C200C200C50100C0000FF3000,
		maxii_ufm_block1.mem3 = 512'h24092600F0002C000003240C6FFB000F0C8028000003F000F0007FF4000F08417FEA000F200050060A012002200A2002B032083A400A08F600FF0C0F200D2000,
		maxii_ufm_block1.mem4 = 512'h000F0C80280000032C010003F0002C08000124047FEE000F200050030A0120022C0800012402200A200D200A200C280800012C08000124002C08000124042000,
		maxii_ufm_block1.mem5 = 512'h00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0006FFD000F2009F0006FFB,
		maxii_ufm_block1.mem6 = 512'h00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
		maxii_ufm_block1.mem7 = 512'h00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
		maxii_ufm_block1.mem8 = 512'h00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
		maxii_ufm_block1.mem9 = 512'h00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
		maxii_ufm_block1.osc_sim_setting = 136000,
		maxii_ufm_block1.lpm_type = "maxii_ufm";
	assign
		add_en = (tmp_add_en & read_op),
		add_load = (tmp_add_load & read_op),
		arclk = (tmp_arclk0 & read_op),
		busy_arclk = arclk,
		busy_drclk = in_read_drclk,
		control_mux = (((~ q4) & ((q3 | q2) | q1)) | q4),
		copy_tmp_decode = tmp_decode,
		data_valid = dffe7,
		data_valid_en = ((q4 & q3) & q1),
		dly_real_decode = dffe2,
		dly_tmp_decode = dffe4,
		do = dffe10a,
		drdin = 1'b0,
		gated1 = dffe11,
		gated2 = dffe12,
		hold_decode = ((~ dffe2) & real_decode),
		in_read_data_en = (tmp_in_read_data_en & read_op),
		in_read_drclk = (tmp_in_read_drclk & read_op),
		in_read_drshft = (tmp_in_read_drshft & read_op),
		mux_nread = (((~ control_mux) & read) | (control_mux & (~ data_valid_en))),
		nbusy = ((~ dly_tmp_decode) & (~ ufm_bgpbusy)),
		osc = ufm_osc,
		q0 = wire_cntr5_q[0:0],
		q1 = wire_cntr5_q[1:1],
		q2 = wire_cntr5_q[2:2],
		q3 = wire_cntr5_q[3:3],
		q4 = wire_cntr5_q[4:4],
		read = (~ nread),
		read_op = tmp_read,
		real_decode = start_decode,
		shiftin = {dffe8a[7:0], 1'b0},
		sipo_q = {dffe9a15[0:0], dffe9a14[0:0], dffe9a13[0:0], dffe9a12[0:0], dffe9a11[0:0], dffe9a10[0:0], dffe9a9[0:0], dffe9a8[0:0], dffe9a7[0:0], dffe9a6[0:0], dffe9a5[0:0], dffe9a4[0:0], dffe9a3[0:0], dffe9a2[0:0], dffe9a1[0:0], dffe9a0[0:0]},
		start_decode = (mux_nread & (~ ufm_bgpbusy)),
		start_op = (hold_decode | stop_op),
		stop_op = ((((q4 & q3) & (~ q2)) & q1) & q0),
		tmp_add_en = ((~ q4) & ((~ q3) | ((~ q2) & (~ q1)))),
		tmp_add_load = (~ ((~ q4) & (((((~ q3) & q2) | ((~ q3) & q0)) | ((~ q3) & q1)) | ((q3 & (~ q2)) & (~ q1))))),
		tmp_arclk = (gated1 & (~ ufm_osc)),
		tmp_arclk0 = ((~ q4) & ((~ q3) | (((~ q2) & (~ q1)) & (~ q0)))),
		tmp_ardin = dffe8a[8:8],
		tmp_arshft = add_en,
		tmp_data_valid2 = (stop_op & read_op),
		tmp_decode = tmp_read,
		tmp_drclk = (gated2 & (~ ufm_osc)),
		tmp_in_read_data_en = (((~ q4) & ((q3 & q2) | (q3 & q1))) | (q4 & (((~ q3) | ((~ q2) & (~ q1))) | (q1 & (~ q0))))),
		tmp_in_read_drclk = (((~ q4) & ((q3 & q2) | (q3 & q1))) | (q4 & (((~ q3) | ((~ q2) & (~ q1))) | (q1 & (~ q0))))),
		tmp_in_read_drshft = (~ (((((~ q4) & q3) & (~ q2)) & q1) & q0)),
		tmp_read = dffe3,
		ufm_arclk = tmp_arclk,
		ufm_ardin = tmp_ardin,
		ufm_arshft = tmp_arshft,
		ufm_bgpbusy = wire_maxii_ufm_block1_bgpbusy,
		ufm_drclk = tmp_drclk,
		ufm_drdin = drdin,
		ufm_drdout = wire_maxii_ufm_block1_drdout,
		ufm_drshft = in_read_drshft,
		ufm_osc = wire_maxii_ufm_block1_osc,
		ufm_oscena = 1'b1,
		X_var = (shiftin & {9{(~ add_load)}}),
		Y_var = (addr & {9{add_load}}),
		Z_var = (X_var | Y_var);
	initial
 	begin
		$display("WARNING : Memory initialization file TEST.MIF doesn't belong to any of the three recognized file types (MIF, RIF or HEX). Assuming file type to be MIF.");
	end
endmodule //UFM_altufm_parallel_pej
//VALID FILE


// synopsys translate_off
`timescale 1 ps / 1 ps
// synopsys translate_on
module UFM (
	nread,
	addr,
	nbusy,
	data_valid,
	do,
	osc)/* synthesis synthesis_clearbox = 1 */;

	input	  nread;
	input	[8:0]  addr;
	output	  nbusy;
	output	  data_valid;
	output	[15:0]  do;
	output	  osc;

	wire  sub_wire0;
	wire [15:0] sub_wire1;
	wire  sub_wire2;
	wire  sub_wire3;
	wire  osc = sub_wire0;
	wire [15:0] do = sub_wire1[15:0];
	wire  data_valid = sub_wire2;
	wire  nbusy = sub_wire3;

	UFM_altufm_parallel_pej	UFM_altufm_parallel_pej_component (
				.addr (addr),
				.nread (nread),
				.osc (sub_wire0),
				.do (sub_wire1),
				.data_valid (sub_wire2),
				.nbusy (sub_wire3));

endmodule

// ============================================================
// CNX file retrieval info
// ============================================================
// Retrieval info: PRIVATE: WIZMAN_OVERRIDE_CBX_GEN_MODE STRING "ON"
// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "MAX II"
// Retrieval info: PRIVATE: INTENDED_DEVICE_PART STRING ""
// Retrieval info: PRIVATE: INTERFACE_CHOICE NUMERIC "1"
// Retrieval info: PRIVATE: VERSION_NUMBER NUMERIC "0"
// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "MAX II"
// Retrieval info: CONSTANT: ACCESS_MODE STRING "READ_ONLY"
// Retrieval info: CONSTANT: WIDTH_ADDRESS NUMERIC "9"
// Retrieval info: CONSTANT: WIDTH_DATA NUMERIC "16"
// Retrieval info: CONSTANT: WIDTH_UFM_ADDRESS NUMERIC "9"
// Retrieval info: CONSTANT: LPM_FILE STRING "TEST.MIF"
// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "MAX II"
// Retrieval info: CONSTANT: OSC_FREQUENCY NUMERIC "136000"
// Retrieval info: USED_PORT: nread 0 0 0 0 INPUT NODEFVAL nread
// Retrieval info: USED_PORT: addr 0 0 9 0 INPUT NODEFVAL addr[8..0]
// Retrieval info: USED_PORT: nbusy 0 0 0 0 OUTPUT NODEFVAL nbusy
// Retrieval info: USED_PORT: data_valid 0 0 0 0 OUTPUT NODEFVAL data_valid
// Retrieval info: USED_PORT: do 0 0 16 0 OUTPUT NODEFVAL do[15..0]
// Retrieval info: USED_PORT: osc 0 0 0 0 OUTPUT NODEFVAL osc
// Retrieval info: CONNECT: @nread 0 0 0 0 nread 0 0 0 0
// Retrieval info: CONNECT: @addr 0 0 9 0 addr 0 0 9 0
// Retrieval info: CONNECT: nbusy 0 0 0 0 @nbusy 0 0 0 0
// Retrieval info: CONNECT: data_valid 0 0 0 0 @data_valid 0 0 0 0
// Retrieval info: CONNECT: do 0 0 16 0 @do 0 0 16 0
// Retrieval info: CONNECT: osc 0 0 0 0 @osc 0 0 0 0
// Retrieval info: GEN_FILE: TYPE_NORMAL UFM.v TRUE
// Retrieval info: GEN_FILE: TYPE_NORMAL UFM.inc TRUE
// Retrieval info: GEN_FILE: TYPE_NORMAL UFM.cmp FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL UFM.bsf TRUE
// Retrieval info: GEN_FILE: TYPE_NORMAL UFM_inst.v FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL UFM_bb.v TRUE

⌨️ 快捷键说明

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