亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? or1200_ctrl.v

?? 一個開放的risc
?? V
?? 第 1 頁 / 共 2 頁
字號:
//////////////////////////////////////////////////////////////////////////                                                              ////////  OR1200's Instruction decode                                 ////////                                                              ////////  This file is part of the OpenRISC 1200 project              ////////  http://www.opencores.org/cores/or1k/                        ////////                                                              ////////  Description                                                 ////////  Majority of instruction decoding is performed here.         ////////                                                              ////////  To Do:                                                      ////////   - make it smaller and faster                               ////////                                                              ////////  Author(s):                                                  ////////      - Damjan Lampret, lampret@opencores.org                 ////////                                                              //////////////////////////////////////////////////////////////////////////////                                                              //////// Copyright (C) 2000 Authors and OPENCORES.ORG                 ////////                                                              //////// This source file may be used and distributed without         //////// restriction provided that this copyright statement is not    //////// removed from the file and that any derivative work contains  //////// the original copyright notice and the associated disclaimer. ////////                                                              //////// This source file is free software; you can redistribute it   //////// and/or modify it under the terms of the GNU Lesser General   //////// Public License as published by the Free Software Foundation; //////// either version 2.1 of the License, or (at your option) any   //////// later version.                                               ////////                                                              //////// This source is distributed in the hope that it will be       //////// useful, but WITHOUT ANY WARRANTY; without even the implied   //////// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //////// PURPOSE.  See the GNU Lesser General Public License for more //////// details.                                                     ////////                                                              //////// You should have received a copy of the GNU Lesser General    //////// Public License along with this source; if not, download it   //////// from http://www.opencores.org/lgpl.shtml                     ////////                                                              ////////////////////////////////////////////////////////////////////////////// CVS Revision History//// $Log: or1200_ctrl.v,v $// Revision 1.8  2003/04/24 00:16:07  lampret// No functional changes. Added defines to disable implementation of multiplier/MAC//// Revision 1.7  2002/09/07 05:42:02  lampret// Added optional SR[CY]. Added define to enable additional (compare) flag modifiers. Defines are OR1200_IMPL_ADDC and OR1200_ADDITIONAL_FLAG_MODIFIERS.//// Revision 1.6  2002/03/29 15:16:54  lampret// Some of the warnings fixed.//// Revision 1.5  2002/02/01 19:56:54  lampret// Fixed combinational loops.//// Revision 1.4  2002/01/28 01:15:59  lampret// Changed 'void' nop-ops instead of insn[0] to use insn[16]. Debug unit stalls the tick timer. Prepared new flag generation for add and and insns. Blocked DC/IC while they are turned off. Fixed I/D MMU SPRs layout except WAYs. TODO: smart IC invalidate, l.j 2 and TLB ways.//// Revision 1.3  2002/01/18 14:21:43  lampret// Fixed 'the NPC single-step fix'.//// Revision 1.2  2002/01/14 06:18:22  lampret// Fixed mem2reg bug in FAST implementation. Updated debug unit to work with new genpc/if.//// Revision 1.1  2002/01/03 08:16:15  lampret// New prefixes for RTL files, prefixed module names. Updated cache controllers and MMUs.//// Revision 1.14  2001/11/30 18:59:17  simons// force_dslot_fetch does not work -  allways zero.//// Revision 1.13  2001/11/20 18:46:15  simons// Break point bug fixed//// Revision 1.12  2001/11/18 08:36:28  lampret// For GDB changed single stepping and disabled trap exception.//// Revision 1.11  2001/11/13 10:02:21  lampret// Added 'setpc'. Renamed some signals (except_flushpipe into flushpipe etc)//// Revision 1.10  2001/11/12 01:45:40  lampret// Moved flag bit into SR. Changed RF enable from constant enable to dynamic enable for read ports.//// Revision 1.9  2001/11/10 03:43:57  lampret// Fixed exceptions.//// Revision 1.8  2001/10/21 17:57:16  lampret// Removed params from generic_XX.v. Added translate_off/on in sprs.v and id.v. Removed spr_addr from dc.v and ic.v. Fixed CR+LF.//// Revision 1.7  2001/10/14 13:12:09  lampret// MP3 version.//// Revision 1.1.1.1  2001/10/06 10:18:36  igorm// no message//// Revision 1.2  2001/08/13 03:36:20  lampret// Added cfg regs. Moved all defines into one defines.v file. More cleanup.//// Revision 1.1  2001/08/09 13:39:33  lampret// Major clean-up.////// synopsys translate_off`include "timescale.v"// synopsys translate_on`include "or1200_defines.v"module or1200_ctrl(	// Clock and reset	clk, rst,	// Internal i/f	id_freeze, ex_freeze, wb_freeze, flushpipe, if_insn, ex_insn, branch_op, branch_taken,	rf_addra, rf_addrb, rf_rda, rf_rdb, alu_op, mac_op, shrot_op, comp_op, rf_addrw, rfwb_op,	wb_insn, simm, branch_addrofs, lsu_addrofs, sel_a, sel_b, lsu_op,	multicycle, spr_addrimm, wbforw_valid, sig_syscall, sig_trap,	force_dslot_fetch, no_more_dslot, ex_void, id_macrc_op, ex_macrc_op, rfe, except_illegal);//// I/O//input					clk;input					rst;input					id_freeze;input					ex_freeze;input					wb_freeze;input					flushpipe;input	[31:0]				if_insn;output	[31:0]				ex_insn;output	[`OR1200_BRANCHOP_WIDTH-1:0]		branch_op;input						branch_taken;output	[`OR1200_REGFILE_ADDR_WIDTH-1:0]	rf_addrw;output	[`OR1200_REGFILE_ADDR_WIDTH-1:0]	rf_addra;output	[`OR1200_REGFILE_ADDR_WIDTH-1:0]	rf_addrb;output					rf_rda;output					rf_rdb;output	[`OR1200_ALUOP_WIDTH-1:0]		alu_op;output	[`OR1200_MACOP_WIDTH-1:0]		mac_op;output	[`OR1200_SHROTOP_WIDTH-1:0]		shrot_op;output	[`OR1200_RFWBOP_WIDTH-1:0]		rfwb_op;output	[31:0]				wb_insn;output	[31:0]				simm;output	[31:2]				branch_addrofs;output	[31:0]				lsu_addrofs;output	[`OR1200_SEL_WIDTH-1:0]		sel_a;output	[`OR1200_SEL_WIDTH-1:0]		sel_b;output	[`OR1200_LSUOP_WIDTH-1:0]		lsu_op;output	[`OR1200_COMPOP_WIDTH-1:0]		comp_op;output	[`OR1200_MULTICYCLE_WIDTH-1:0]		multicycle;output	[15:0]				spr_addrimm;input					wbforw_valid;output					sig_syscall;output					sig_trap;output					force_dslot_fetch;output					no_more_dslot;output					ex_void;output					id_macrc_op;output					ex_macrc_op;output					rfe;output					except_illegal;//// Internal wires and regs//reg	[`OR1200_BRANCHOP_WIDTH-1:0]		pre_branch_op;reg	[`OR1200_BRANCHOP_WIDTH-1:0]		branch_op;reg	[`OR1200_ALUOP_WIDTH-1:0]		alu_op;`ifdef OR1200_MAC_IMPLEMENTEDreg	[`OR1200_MACOP_WIDTH-1:0]		mac_op;reg					ex_macrc_op;`elsewire	[`OR1200_MACOP_WIDTH-1:0]		mac_op;wire					ex_macrc_op;`endifreg	[`OR1200_SHROTOP_WIDTH-1:0]		shrot_op;reg	[31:0]				id_insn;reg	[31:0]				ex_insn;reg	[31:0]				wb_insn;reg	[`OR1200_REGFILE_ADDR_WIDTH-1:0]	rf_addrw;reg	[`OR1200_REGFILE_ADDR_WIDTH-1:0]	wb_rfaddrw;reg	[`OR1200_RFWBOP_WIDTH-1:0]		rfwb_op;reg	[31:0]				lsu_addrofs;reg	[`OR1200_SEL_WIDTH-1:0]		sel_a;reg	[`OR1200_SEL_WIDTH-1:0]		sel_b;reg					sel_imm;reg	[`OR1200_LSUOP_WIDTH-1:0]		lsu_op;reg	[`OR1200_COMPOP_WIDTH-1:0]		comp_op;reg	[`OR1200_MULTICYCLE_WIDTH-1:0]		multicycle;reg					imm_signextend;reg	[15:0]				spr_addrimm;reg					sig_syscall;reg					sig_trap;reg					except_illegal;wire					id_void;//// Register file read addresses//assign rf_addra = if_insn[20:16];assign rf_addrb = if_insn[15:11];assign rf_rda = if_insn[31];assign rf_rdb = if_insn[30];//// Force fetch of delay slot instruction when jump/branch is preceeded by load/store// instructions//// SIMON// assign force_dslot_fetch = ((|pre_branch_op) & (|lsu_op));assign force_dslot_fetch = 1'b0;assign no_more_dslot = |branch_op & !id_void & branch_taken | (branch_op == `OR1200_BRANCHOP_RFE);assign id_void = (id_insn[31:26] == `OR1200_OR32_NOP) & id_insn[16];assign ex_void = (ex_insn[31:26] == `OR1200_OR32_NOP) & ex_insn[16];//// Sign/Zero extension of immediates//assign simm = (imm_signextend == 1'b1) ? {{16{id_insn[15]}}, id_insn[15:0]} : {{16'b0}, id_insn[15:0]};//// Sign extension of branch offset//assign branch_addrofs = {{4{ex_insn[25]}}, ex_insn[25:0]};//// l.macrc in ID stage//`ifdef OR1200_MAC_IMPLEMENTEDassign id_macrc_op = (id_insn[31:26] == `OR1200_OR32_MOVHI) & id_insn[16];`elseassign id_macrc_op = 1'b0;`endif//////assign rfe = (pre_branch_op == `OR1200_BRANCHOP_RFE) | (branch_op == `OR1200_BRANCHOP_RFE);//// Generation of sel_a//always @(rf_addrw or id_insn or rfwb_op or wbforw_valid or wb_rfaddrw)	if ((id_insn[20:16] == rf_addrw) && rfwb_op[0])		sel_a = `OR1200_SEL_EX_FORW;	else if ((id_insn[20:16] == wb_rfaddrw) && wbforw_valid)		sel_a = `OR1200_SEL_WB_FORW;	else		sel_a = `OR1200_SEL_RF;//// Generation of sel_b//always @(rf_addrw or sel_imm or id_insn or rfwb_op or wbforw_valid or wb_rfaddrw)	if (sel_imm)		sel_b = `OR1200_SEL_IMM;	else if ((id_insn[15:11] == rf_addrw) && rfwb_op[0])		sel_b = `OR1200_SEL_EX_FORW;	else if ((id_insn[15:11] == wb_rfaddrw) && wbforw_valid)		sel_b = `OR1200_SEL_WB_FORW;	else		sel_b = `OR1200_SEL_RF;//// l.macrc in EX stage//`ifdef OR1200_MAC_IMPLEMENTEDalways @(posedge clk or posedge rst) begin	if (rst)		ex_macrc_op <= #1 1'b0;	else if (!ex_freeze & id_freeze | flushpipe)		ex_macrc_op <= #1 1'b0;	else if (!ex_freeze)		ex_macrc_op <= #1 id_macrc_op;end`elseassign ex_macrc_op = 1'b0;`endif//// Decode of spr_addrimm//always @(posedge clk or posedge rst) begin	if (rst)		spr_addrimm <= #1 16'h0000;	else if (!ex_freeze & id_freeze | flushpipe)		spr_addrimm <= #1 16'h0000;	else if (!ex_freeze) begin		case (id_insn[31:26])	// synopsys parallel_case			// l.mfspr			`OR1200_OR32_MFSPR: 				spr_addrimm <= #1 id_insn[15:0];			// l.mtspr			default:				spr_addrimm <= #1 {id_insn[25:21], id_insn[10:0]};		endcase	endend//// Decode of multicycle//always @(id_insn) begin  case (id_insn[31:26])		// synopsys parallel_case`ifdef UNUSED    // l.lwz    `OR1200_OR32_LWZ:      multicycle = `OR1200_TWO_CYCLES;        // l.lbz    `OR1200_OR32_LBZ:      multicycle = `OR1200_TWO_CYCLES;        // l.lbs    `OR1200_OR32_LBS:      multicycle = `OR1200_TWO_CYCLES;        // l.lhz    `OR1200_OR32_LHZ:      multicycle = `OR1200_TWO_CYCLES;        // l.lhs    `OR1200_OR32_LHS:      multicycle = `OR1200_TWO_CYCLES;        // l.sw    `OR1200_OR32_SW:      multicycle = `OR1200_TWO_CYCLES;        // l.sb    `OR1200_OR32_SB:      multicycle = `OR1200_TWO_CYCLES;        // l.sh    `OR1200_OR32_SH:      multicycle = `OR1200_TWO_CYCLES;`endif        // ALU instructions except the one with immediate    `OR1200_OR32_ALU:      multicycle = id_insn[`OR1200_ALUMCYC_POS];        // Single cycle instructions    default: begin      multicycle = `OR1200_ONE_CYCLE;    end      endcase  end//// Decode of imm_signextend//always @(id_insn) begin  case (id_insn[31:26])		// synopsys parallel_case	// l.addi	`OR1200_OR32_ADDI:		imm_signextend = 1'b1;	// l.addic	`OR1200_OR32_ADDIC:		imm_signextend = 1'b1;	// l.xori	`OR1200_OR32_XORI:		imm_signextend = 1'b1;	// l.muli`ifdef OR1200_MULT_IMPLEMENTED	`OR1200_OR32_MULI:		imm_signextend = 1'b1;`endif	// l.maci`ifdef OR1200_MAC_IMPLEMENTED	`OR1200_OR32_MACI:		imm_signextend = 1'b1;`endif	// SFXX insns with immediate	`OR1200_OR32_SFXXI:		imm_signextend = 1'b1;	// Instructions with no or zero extended immediate	default: begin		imm_signextend = 1'b0;	endendcaseend//// LSU addr offset//always @(lsu_op or ex_insn) begin	lsu_addrofs[10:0] = ex_insn[10:0];	case(lsu_op)	// synopsys parallel_case		`OR1200_LSUOP_SW, `OR1200_LSUOP_SH, `OR1200_LSUOP_SB : 			lsu_addrofs[31:11] = {{16{ex_insn[25]}}, ex_insn[25:21]};		default : 			lsu_addrofs[31:11] = {{16{ex_insn[15]}}, ex_insn[15:11]};	endcaseend//// Register file write address//always @(posedge clk or posedge rst) begin	if (rst)		rf_addrw <= #1 5'd0;	else if (!ex_freeze & id_freeze)		rf_addrw <= #1 5'd00;	else if (!ex_freeze)		case (pre_branch_op)	// synopsys parallel_case			`OR1200_BRANCHOP_JR, `OR1200_BRANCHOP_BAL:				rf_addrw <= #1 5'd09;	// link register r9			default:				rf_addrw <= #1 id_insn[25:21];		endcaseend//// rf_addrw in wb stage (used in forwarding logic)//always @(posedge clk or posedge rst) begin	if (rst)		wb_rfaddrw <= #1 5'd0;	else if (!wb_freeze)		wb_rfaddrw <= #1 rf_addrw;end//// Instruction latch in id_insn//always @(posedge clk or posedge rst) begin	if (rst)		id_insn <= #1 {`OR1200_OR32_NOP, 26'h041_0000};        else if (flushpipe)                id_insn <= #1 {`OR1200_OR32_NOP, 26'h041_0000};        // id_insn[16] must be 1	else if (!id_freeze) begin		id_insn <= #1 if_insn;`ifdef OR1200_VERBOSE// synopsys translate_off		$display("%t: id_insn <= %h", $time, if_insn);// synopsys translate_on`endif	endend//// Instruction latch in ex_insn//always @(posedge clk or posedge rst) begin	if (rst)		ex_insn <= #1 {`OR1200_OR32_NOP, 26'h041_0000};	else if (!ex_freeze & id_freeze | flushpipe)		ex_insn <= #1 {`OR1200_OR32_NOP, 26'h041_0000};	// ex_insn[16] must be 1	else if (!ex_freeze) begin		ex_insn <= #1 id_insn;`ifdef OR1200_VERBOSE// synopsys translate_off		$display("%t: ex_insn <= %h", $time, id_insn);// synopsys translate_on`endif	endend//// Instruction latch in wb_insn//always @(posedge clk or posedge rst) begin	if (rst)		wb_insn <= #1 {`OR1200_OR32_NOP, 26'h041_0000};	else if (flushpipe)		wb_insn <= #1 {`OR1200_OR32_NOP, 26'h041_0000};	// wb_insn[16] must be 1	else if (!wb_freeze) begin		wb_insn <= #1 ex_insn;	endend//// Decode of sel_imm//always @(posedge clk or posedge rst) begin	if (rst)		sel_imm <= #1 1'b0;	else if (!id_freeze) begin	  case (if_insn[31:26])		// synopsys parallel_case	    // j.jalr	    `OR1200_OR32_JALR:	      sel_imm <= #1 1'b0;	    	    // l.jr	    `OR1200_OR32_JR:	      sel_imm <= #1 1'b0;	    	    // l.rfe

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩视频一区二区| 99综合电影在线视频| 亚洲免费av高清| 国产欧美1区2区3区| 欧美精品一二三四| 欧美午夜片在线观看| 成人激情电影免费在线观看| 国产乱码精品一区二区三区忘忧草| 亚洲二区在线观看| 一区二区视频在线看| 中文字幕一区二区三区在线播放 | 色综合天天综合给合国产| 国产一区欧美一区| 经典三级在线一区| 人人超碰91尤物精品国产| 亚洲国产精品久久艾草纯爱| 亚洲男女一区二区三区| 自拍偷拍亚洲综合| 亚洲欧美日韩综合aⅴ视频| 国产精品你懂的在线欣赏| 日本一区二区三级电影在线观看| 欧美成人一级视频| 久久久久久久久97黄色工厂| 国产色一区二区| 国产精品色婷婷| 国产精品久久久久一区| 亚洲少妇屁股交4| 亚洲一区二区三区视频在线播放| 亚洲一二三区不卡| 亚洲综合精品自拍| 日韩影视精彩在线| 精品一区二区三区日韩| 日韩国产欧美视频| 国产中文字幕精品| 成人av在线资源| 国产精品综合视频| 成人午夜免费视频| 色综合中文字幕国产 | 亚洲美女视频一区| 亚洲一区二区影院| 七七婷婷婷婷精品国产| 精品一区二区三区不卡| 国产成a人无v码亚洲福利| 国产成人在线视频网站| 97成人超碰视| 6080日韩午夜伦伦午夜伦| 精品女同一区二区| 亚洲欧洲三级电影| 亚洲色欲色欲www在线观看| 亚洲成人资源网| 黄色日韩网站视频| 99久久精品99国产精品 | 老司机精品视频导航| 国产黄人亚洲片| 欧美三级在线播放| 欧美大片拔萝卜| 中文字幕一区二区三区精华液| 亚洲第一福利一区| 免费的成人av| 97精品视频在线观看自产线路二| 欧美群妇大交群的观看方式| 欧美一区二区三区免费观看视频| 欧美sm美女调教| 亚洲美女在线一区| 国产自产2019最新不卡| 91福利在线免费观看| 久久一区二区三区四区| 亚洲欧美自拍偷拍| 激情综合网av| 91久久久免费一区二区| 日韩精品专区在线| 亚洲精品日韩一| 国产在线视频一区二区| 成年人午夜久久久| 欧美成人精品福利| 一区二区三区在线看| 激情小说欧美图片| 欧美性视频一区二区三区| 欧美精品一区二区高清在线观看| 亚洲精品中文字幕在线观看| 极品少妇一区二区三区精品视频| 欧美亚洲一区二区三区四区| 中文乱码免费一区二区| 亚洲第一二三四区| 99精品国产99久久久久久白柏| 精品奇米国产一区二区三区| 亚洲视频综合在线| 国产成人综合在线观看| 欧美一级一级性生活免费录像| 一区二区三区在线视频免费 | 偷拍亚洲欧洲综合| 99re在线视频这里只有精品| 久久精品视频在线免费观看| 日韩成人精品视频| 色婷婷久久99综合精品jk白丝| 国产丝袜美腿一区二区三区| 天天色 色综合| 色综合久久久久久久久久久| 中文字幕av一区 二区| 精品一区二区三区的国产在线播放| 欧美日韩一区二区三区视频| 亚洲精品中文在线观看| 色综合亚洲欧洲| 日韩理论片在线| eeuss国产一区二区三区| 久久久五月婷婷| 黄色日韩三级电影| 精品嫩草影院久久| 麻豆成人久久精品二区三区小说| 欧美精品777| 亚洲愉拍自拍另类高清精品| 欧美日韩中文字幕一区| 日韩精品免费专区| 精品人伦一区二区色婷婷| 国产美女精品人人做人人爽| 国产精品午夜在线观看| 日本韩国精品一区二区在线观看| 亚洲高清在线视频| 欧美一区二区三区成人| 国产伦精品一区二区三区视频青涩| 国产日产精品一区| 色哟哟欧美精品| 婷婷六月综合网| 精品日韩一区二区三区免费视频| 国产福利一区在线观看| 亚洲天堂a在线| 欧美一区二区在线免费观看| 精品制服美女丁香| 中文字幕五月欧美| 欧美精品v国产精品v日韩精品| 国模娜娜一区二区三区| 亚洲欧洲制服丝袜| 欧美精品第1页| 国产高清亚洲一区| 一区二区三区在线观看欧美 | 亚洲电影中文字幕在线观看| 日韩欧美成人午夜| av电影天堂一区二区在线| 亚洲r级在线视频| 久久亚洲一区二区三区四区| 91一区二区三区在线播放| 日日夜夜精品视频天天综合网| 精品国产一区二区在线观看| 91小视频在线观看| 久久国产精品一区二区| 中文字幕制服丝袜成人av| 欧美久久高跟鞋激| 成人免费视频app| 免费视频一区二区| 亚洲色图在线播放| 2023国产精品自拍| 欧洲亚洲精品在线| 国产成人免费av在线| 爽好久久久欧美精品| ●精品国产综合乱码久久久久| 欧美精品1区2区3区| 成人app软件下载大全免费| 秋霞影院一区二区| 亚洲乱码国产乱码精品精可以看| 精品国产一区二区三区久久久蜜月 | 国产高清精品在线| 天天综合天天综合色| 国产精品久久久久国产精品日日| 欧美日韩国产区一| 不卡一区二区中文字幕| 久久成人综合网| 午夜a成v人精品| 亚洲精品欧美专区| 久久精品男人天堂av| 欧美久久久久久久久| 一本到高清视频免费精品| 国产激情视频一区二区三区欧美 | 一本在线高清不卡dvd| 国产在线不卡一卡二卡三卡四卡| 香蕉成人伊视频在线观看| 中文字幕一区二区三区在线播放 | 亚洲成人午夜电影| 亚洲欧洲国产日韩| 国产三级精品在线| 精品国内二区三区| 欧美一区二区三区性视频| 欧美性猛交一区二区三区精品| 99国产一区二区三精品乱码| 国产成人一区在线| 精品影视av免费| 天天操天天色综合| 午夜影院在线观看欧美| 一区二区三区中文免费| 国产精品久久久久一区| 久久久久综合网| 精品国产一二三| 精品三级av在线| 精品国产一二三区| 欧美精品一区二区三区蜜臀| 日韩精品资源二区在线| 欧美一区二区三区四区五区| 6080亚洲精品一区二区| 69堂成人精品免费视频| 欧美军同video69gay| 欧美一区二区三区四区在线观看 |