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

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

?? dspuva16.v

?? 16bit 定點DSP。是很精練的例子
?? V
?? 第 1 頁 / 共 2 頁
字號:
//
// PROJECT:	OpenDSP - The 'DSPuva16' 16-bit fixed-point DSP for FPGA
//		http://www.DTE.eis.uva.es/OpenProjects/OpenDSP/index.htm
//
// RIGHTS:	Santiago de Pablo
//		Copyright (c) 2001. All Rights Reserved.
//
// GPL:		You may freely copy, change, and distribute it,
//		but you may not impose restrictions on further distribution,
//		and you must make the source code available.
//
//		This code is supplied "as is", without any warranty.
//		Please, tell us how many devices have you implemented.
//
// AUTHOR:	Santiago de Pablo (sanpab@eis.uva.es)
//		Department of Electronics Technology (DTE)
//		University of Valladolid (Spain)
//
// MODULE:	DSPuva16.v
//
// DESCRIPTION:	The 'DSPuva16' is a 16-bit fixed-point DSP processor for FPGA.
//		It has 16 internal 24-bit registers, r0 to r15, but it has no more memory.
//		All registers, except r0, can be used in all operations.
//		It can operate with up to three registers (rD = rS op rT) with "uva" architecture.
//		It can execute 16x16 MAC operations (rD = rD +/- rS * rT) in one instruction cycle.
//		The ALU has eight 24-bit operations: logic, arithmetic, conditional assignment.
//		Precission is extended up to 24 bits (from <1,15> to <1,23>) in all operations.
//		The executable code is from 256 words (version 'A') up to 4K words (version 'E').
//		External accesses are made through 128 I/O ports (P0 to P127).
//
//		The "uva" architecture means that 'r0' is replaced depending on where it's used:
//		  - rD = rS op rT  Uses three registers, anyone from 'r1' to r15'.
//		  - rD = rS op K   Uses an immediate constant because 'r0' is used as rT.
//		  - rD =  0 op rT  A zero is included if the operand rS is 'r0'.
//		  - rD =  0 op K   Both, a zero and a constant, can be used simultaneously.
//		  -      rS op rT  A compare operation is done because 'r0' is used as rD.
//
//		The size of the processor core is about 250 slices in Virtex/Spartan2 FPGAs.
//		Up to eight 16-words memory blocks can be added, with only 9 CLB for each one.
//		All components can be integrated in the same FPGA: core, code memory, ports and added memory.
//
// VERSIONS:	'A' has 256x16 code; 'B' has 512x16; 'C' has 1Kx16; 'D' has 2Kx16; 'E' has 4Kx16.
//
// REVISION:	1.02	20010421	Introducing ACC (same behaviour)
//		1.00	20010416	First stable version (HDL simulation only)
//		0.25	20010411	Adding MODELs for 256-4K code.
//		0.23	20010409	Cheching for '<='
//		0.21	20010326	First public version (not simulated yet)
//		0.19	20010318	More code
//		0.17	20010209	More code
//		0.15	20001221	Successful compilation in Verilog
//		0.13	20001219	Initial version in Verilog
//		0.11	20001209	Initial version in VHDL
//
// TO DO LIST:	Beta tests.
//		Better Test Bench.
//		Test with Program Memory.
//		Generate V flag with MAC?
//		16-bit ports or 24-bit ports?
//
// OPCODES:	NOP            rD =      rS x rT   IF flag, R = T    rD = rS and rT   rD = 0
//		BREAK/MODEL    rD =      rS x K    IF flag, R = K    rD = rS and K    rD = K
//		RET (rS)       rD =      rS * rT   IF flag, R = -T   rD = rS or  rT   rD = -K
//		IN  rD,pN      rD =      rS * K    IF flag, R = -K   rD = rS or  K    rD = rT
//		OUT pN,rD      rD = rD + rS * rT   rD = rS + rT      rD = rS nor rT   rD = -rT
//		JP flag,nn     rD = rD + rS * K    rD = rS + K       rD = rS nor K    rD = not rT
//		GOTO nn        rD = rD - rS * rT   rD = rS - rT      rD = rS xor rT   rD = not K
//		CALL (rD) nn   rD = rD - rS * K    rD = rS - K       rD = rS xor K    -
//
// FLAGS:	(eq), (ne), (ov), (nv), (ge), (gt), (le), (lt) and 8 more for interfacing/control.
//
// BUGS:	Please, report bugs to "dteopenp@eis.uva.es" with reference "OpenDSP v1.02".
//


`define	LOW_POWER		// Valid LOW_POWER or LOW_LOGIC


//---------------//
// DSPuva16 Core //
//---------------//

module DSPuva16 (CLK, nRESET, PORTin, PORTout, PORTaddr, IOread, IOwrite, CODEaddr, CODEdata);

	parameter MODEL = 4;	// Model 'A' uses 0, 'B' uses 1, ..., 'E' uses 4.

	input  			CLK;		// 40 MHz Clock (=> 100ns/instruction)
	input  			nRESET;		// Active-low external Reset

	input       [15:0]	PORTin;		// Input Data Port
	output      [15:0]	PORTout;	// Output Data Port
	output       [6:0]	PORTaddr;	// Port Address
	output			IOread;		// Port Read Signal, active high
	output			IOwrite;	// Port Write Signal, active high

	output [MODEL+7:0]	CODEaddr;	// Code Memory Address
	input       [15:0]	CODEdata;	// Code Memory Data (always read)


	// Internal Registers and Buses:

	reg         [11:0]	PC;		// Program Counter (up to 4K code)
	reg         [15:0]	IR;		// Instruction Register
	reg         [23:0]	ACC;		// Accumulator for 'rT'
	wire        [23:0]	DataBus;	// Internal Data Bus
	wire        [23:0]	RegOut;		// Output from Register Bank
	reg	       		Flag;		// Selected Flag


//----------------------------------------------------------------------------------------------------------------------//
//   State =>	Operations			Program Counter								\\
//----------------------------------------------------------------------------------------------------------------------//
//	00   =>	Read Instruction		PC = PC									\\
//	01   =>	Load IR				PC = PC + 1								//
//	11   =>	ACC = rT			PC = PC									\\
//	10   =>	Read rS - Load RegS and RegT	PC = PC/PC+1/PC+nn/nnn							//
//	00   =>	MAC1 - Writes on rD if ALU	PC = PC									\\
//	01   =>	MAC2 				PC = PC + 1								//
//	11   =>	MAC3				PC = PC									\\
//	10   =>	MAC4				...									//
//	00   =>	Last MAC cycle (for segmentation)									\\
//	01   =>	Reads, accumulates and Writes on rD if MAC								//
//----------------------------------------------------------------------------------------------------------------------\\
//															//
//	 |       Instruction 0 (MAC)      |       Instruction 1 (ALU)      |       Instruction 2 (GOTO)     |		\\
//	 | ___     ___     ___     ___    | ___     ___     ___     ___    | ___     ___     ___     ___    | ___     __//
//  CLK	_|/   \___/   \___/   \___/   \___|/   \___/   \___/   \___/   \___|/   \___/   \___/   \___/   \___|/   \___/	\\
//	 | _______ _______ _______ _______| _______ _______ _______ _______| _______ _______ _______ _______| _______ __//
//State	_|/__st0__/__st1__/__st2__/__st3__|/__st0__/__st1__/__st2__/__st3__|/__st0__/__st1__/__st2__/__st3__|/__st0__/__\\
//	_| _______________ _______________|________________ _______________|________________ _______________| __________//
//   PC	_|/_______n_______\______n+1______|_______n+1______\______n+2______|_______n+2______\______n+3______|/__(new)___\\
//	_| _______________ _______________|________________ _______________|________________ _______________|___________//
//   IR	_|/_______x_______\_______I0______|________I0______\_______I1______|________I1______\_______I2______|___________\\
//	_| _______________________________| _______________________________| _______________________________|___________//
//  S,T	_|/_______________x_______________|\_____________S0,T0_____________|\_____________S1,T1_____________|\__________\\
//	 | _______ _______ _______ _______| _______ _______ _______ _______| _______ _______ _______ _______| _______ __//
//  MAC	_|/___x___/___x___/___x___/___x___|/__m0a__/__m0b__/__m0c__/__m0d__|/__m1a__/__m1b__/__m1c__/__m1d__|/__m2a__/__\\
//	 |________________________________| _______ _______________________| _______ _______________________| _______ __//
//  ALU	_|____x___/___x___/___x___/___x___|/_(OP0)_/___x___/___x___/___x___|/__OP1__/___x___/___x___/___x___|/_(OP2)_/__\\
//	 | _______ _______ _______ _______| _______ _______ _______ _______| _______ _______ _______ _______| _______ __//
// Rdir	_|/___x___/___x___/___T0__/___S0__|/___R0__/___x___/___T1__/___S1__|/___R1__/___R0__/___T2__/___S2__|/___R2__/__\\
//	 |                                |                                | _______ _______                |		//
//  rWE	_|________________________________|________________________________|/  ALU1 \  MAC0 \_______________|___________\\
//	 |                                |                                | _______                        |		//
//  IOr	_|________________________________|________________________________|/ (IN1) \_______________________|___________\\
//	 |                                |                         _______|                                |		//
//  IOw	_|________________________________|________________________/ (OUT1)|\_______________________________|___________\\
//	_|________________________ _______|________________________ _______|________________________ _______|___________//
//Paddr	_|________________________\_______|_______AD0______________\_______|_______AD1______________\_______|_______AD2_\\
//															//
//----------------------------------------------------------------------------------------------------------------------\\


	//----------------//
	// DFF for nRESET //
	//----------------//

	reg ResetFF;	// DFF for nRESET

	always @(posedge CLK or negedge nRESET)		// External nRESET is active 'low'
	begin
		if (nRESET == 1'b0)	ResetFF <= 1'b1;	// Resets all operations
		else			ResetFF <= 1'b0;	// Release the DSP
	end


	//--------------------------------------------//
	// Processor Control Unit: State and Decoding //
	//--------------------------------------------//

	reg [1:0] State;						// Sequencer
	parameter st0 = 2'b00, st1 = 2'b01, st2 = 2'b11, st3 = 2'b10;	// States

	always @(posedge CLK or posedge ResetFF)
	begin
		if (ResetFF)	State	<= st0;
		else case (State)		// synopsys parallel_case full_case
			st0:	State	<= st1;
			st1:	State	<= st2;
			st2:	State	<= st3;
			st3:	State	<= st0;
		endcase
	end

	`define	PHASE0		(State == st0)
	`define	PHASE1		(State == st1)
	`define	PHASE2		(State == st2)
	`define	PHASE3		(State == st3)

	wire [3:0]		OpCode	= IR[15:12];		// Bits used for OpCode
	wire [3:0]		rD	= IR[11: 8];		// Bits used for the destination reg. (rD)
	wire [3:0]		rS	= IR[ 7: 4];		// Bits used for the first operand (rS)
	wire [3:0]		rT	= IR[ 3: 0];		// Bits used for the second operand (rT)
	wire [7:0]		RelAddr	= IR[ 7: 0];		// Bits used for relative addressing
	wire [7:0]		AbsAddr	= {IR[11:8],IR[3:0]};	// Bits used for absolute addressing
	parameter		r0	= 4'b0000;		// The special register 'r0' is being used

	`define	OP_NOP		(OpCode == 4'b0000)	// A NOP/BREAK/RET operation is executed
	`define	OP_IO		(OpCode == 4'b0001)	// An I/O operation is executed
	`define OP_JP		(OpCode == 4'b0010)	// A conditional jump is executed
	`define OP_GOTO		(OpCode == 4'b0011)	// An absolute jump is executed
	`define OP_CALL		(OpCode == 4'b0011)	// CALL and GOTO are identical

	`define	OP_CTRL		(OpCode[3:2] == 2'b00)	// Program Control operations
	`define	OP_MAC		(OpCode[3:2] == 2'b01)	// MAC operations
	`define	OP_ARITH	(OpCode[3:2] == 2'b10)	// Arithmetic operations
	`define	OP_LOGIC	(OpCode[3:2] == 2'b11)	// Logic operations
	`define OP_ALUMAC	(OpCode[3:2] != 2'b00)	// ALU or MAC operations
	`define	OP_ALU		(OpCode[3])		// Arithmetic or Logic operations

	`define	OUT_IN		(IR[7])				// '1' if OUT, '0' if IN
	`define	OP_IN		(`OP_IO & ~`OUT_IN)		// IN  rD,port
	`define	OP_OUT		(`OP_IO &  `OUT_IN)		// OUT port,rS

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线视频欧美区| 色视频一区二区| 中文字幕精品一区二区精品绿巨人| 日韩不卡在线观看日韩不卡视频| 欧美精品粉嫩高潮一区二区| 日韩制服丝袜av| 欧美成人一区二区三区片免费| 精品一区二区av| www国产精品av| 丁香一区二区三区| 亚洲人妖av一区二区| 欧洲生活片亚洲生活在线观看| 午夜久久久久久久久| 日韩欧美亚洲国产另类| 国产精品99久| 亚洲激情在线激情| 91精选在线观看| 国产精品系列在线观看| 亚洲免费观看在线视频| 欧美福利视频一区| 国产综合色精品一区二区三区| 国产精品久久看| 欧美三级日韩三级国产三级| 热久久免费视频| 欧美极品aⅴ影院| 在线区一区二视频| 蜜桃av一区二区| 中文字幕欧美区| 在线看国产一区| 另类调教123区| 中文字幕日韩一区二区| 欧美久久久久久久久久| 国产黑丝在线一区二区三区| 亚洲老妇xxxxxx| 欧美成人精品福利| 91在线观看免费视频| 欧美a级一区二区| 国产精品视频免费| 欧美精品久久一区| 成人综合婷婷国产精品久久蜜臀| 亚洲亚洲人成综合网络| 久久日韩粉嫩一区二区三区| 色综合色综合色综合色综合色综合| 日韩黄色在线观看| 国产精品夫妻自拍| 欧美一二三区在线| 99免费精品视频| 美女脱光内衣内裤视频久久网站| 国产精品久久久久aaaa| 91精品欧美综合在线观看最新| 懂色av中文一区二区三区| 天堂在线亚洲视频| 国产精品久线在线观看| 日韩欧美一区二区久久婷婷| 色婷婷av一区二区三区大白胸 | 97久久久精品综合88久久| 人妖欧美一区二区| 欧美中文字幕亚洲一区二区va在线| 7777精品久久久大香线蕉 | 亚洲黄色小视频| 日韩欧美色综合网站| 99re这里只有精品6| 精品亚洲成a人| 亚洲最大成人综合| 欧美极品少妇xxxxⅹ高跟鞋| 日韩三级在线观看| 91久久线看在观草草青青| 国产一区二区不卡老阿姨| 午夜精品免费在线| 最新日韩在线视频| 久久亚洲捆绑美女| 欧美丰满少妇xxxbbb| 91麻豆国产香蕉久久精品| 国产一区二区三区日韩| 日韩二区三区四区| 亚洲制服丝袜av| 欧美自拍丝袜亚洲| 国产福利一区二区三区视频在线 | 99riav久久精品riav| 国产美女在线精品| 日本视频一区二区三区| 亚洲另类在线制服丝袜| 国产精品久久久久婷婷二区次| 欧美mv日韩mv| 国产精品综合av一区二区国产馆| 久久精品欧美日韩精品| 日韩视频免费直播| 欧美日韩成人在线| 在线视频一区二区三区| 99精品视频一区二区| 东方aⅴ免费观看久久av| 国产一区二区中文字幕| 久久超碰97中文字幕| 日韩二区三区四区| 石原莉奈在线亚洲二区| 亚洲成av人影院| 亚洲一区在线观看网站| 一区二区视频在线| 亚洲男同性恋视频| 中文字幕视频一区二区三区久| 国产精品沙发午睡系列990531| 久久久久97国产精华液好用吗| 日韩欧美一区二区不卡| 日韩视频在线永久播放| 欧美一区国产二区| 在线综合视频播放| 制服丝袜日韩国产| 欧美高清精品3d| 555www色欧美视频| 欧美肥妇bbw| 欧美一级视频精品观看| 日韩欧美综合一区| 91精品国产麻豆| 日韩欧美一区二区免费| 精品av综合导航| 久久精品一区二区三区不卡牛牛| 久久先锋影音av鲁色资源网| 国产色婷婷亚洲99精品小说| 国产精品网站在线观看| 中文字幕一区三区| 亚洲欧美日韩国产综合| 亚洲精品va在线观看| 午夜影视日本亚洲欧洲精品| 日韩综合在线视频| 美女网站色91| 国产美女娇喘av呻吟久久 | 久久国产尿小便嘘嘘| 久久99久久99精品免视看婷婷| 精品中文av资源站在线观看| 国产精品资源在线观看| 成人av动漫网站| 色妹子一区二区| 欧美日本视频在线| 日韩欧美123| 久久精品人人做人人综合| 国产精品卡一卡二卡三| 亚洲精品中文在线影院| 亚洲成人精品影院| 日韩不卡一区二区三区| 国产一区日韩二区欧美三区| 韩国女主播一区二区三区| 成人免费毛片片v| 91福利视频网站| 欧美性猛片aaaaaaa做受| 91精品午夜视频| 久久欧美一区二区| 亚洲另类在线制服丝袜| 亚洲午夜羞羞片| 日本va欧美va精品| 粉嫩aⅴ一区二区三区四区五区| 99精品久久99久久久久| 欧美精品丝袜中出| 日韩欧美一区二区久久婷婷| 国产精品久久99| 国产精品第五页| 亚洲v中文字幕| 久久99久久精品| 懂色中文一区二区在线播放| 欧美日韩一区二区在线观看视频| 91精品国产91久久综合桃花| 欧美激情一区在线观看| 中文成人综合网| 亚洲国产精品视频| 国产乱人伦精品一区二区在线观看| 成人国产精品免费观看视频| 欧美日本在线观看| 久久久午夜精品| 亚洲一区二区三区在线播放| 日韩高清一区二区| jvid福利写真一区二区三区| 678五月天丁香亚洲综合网| 久久久另类综合| 亚洲一区二区三区影院| 国模少妇一区二区三区| 日本高清免费不卡视频| 欧美一级片免费看| 欧美国产精品一区| 午夜精品久久久久久久久久久| 久久99深爱久久99精品| 91麻豆国产香蕉久久精品| 日韩一区二区精品葵司在线| 亚洲视频每日更新| 午夜精品在线看| 国产盗摄视频一区二区三区| 欧美日产国产精品| 国产欧美日韩卡一| 强制捆绑调教一区二区| 国产成人av自拍| 91精品欧美福利在线观看| 亚洲素人一区二区| 久草这里只有精品视频| 在线观看不卡一区| 国产亚洲欧美日韩日本| 日韩高清一级片| 在线看日本不卡| 日本一区免费视频| 麻豆国产欧美一区二区三区| 91丨国产丨九色丨pron| 久久久久久久久一| 五月婷婷综合激情|