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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? dspuva16.v

?? 16bit 定點(diǎn)DSP。是很精練的例子
?? V
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
//
// 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

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧洲av在线精品| 丝袜亚洲另类丝袜在线| 99久久99久久免费精品蜜臀| 粗大黑人巨茎大战欧美成人| 国产成人免费9x9x人网站视频| 国内不卡的二区三区中文字幕| 久久草av在线| av在线播放成人| 91黄色免费网站| 日韩区在线观看| 国产精品丝袜黑色高跟| 亚洲免费观看高清完整版在线| 一区二区在线观看视频在线观看| 香蕉久久夜色精品国产使用方法 | 久久一日本道色综合| 久久久蜜臀国产一区二区| 欧美电影免费观看高清完整版在| 中文一区二区完整视频在线观看| 综合久久久久久| 日本va欧美va瓶| 91小视频免费观看| 欧美va亚洲va在线观看蝴蝶网| 中文字幕免费一区| 日韩精品福利网| 91丝袜高跟美女视频| 69堂亚洲精品首页| 亚洲视频在线观看一区| 麻豆国产精品一区二区三区| 日本丰满少妇一区二区三区| 日韩精品专区在线| 亚洲国产精品久久人人爱| 国产一区二区女| 91精品国产高清一区二区三区| 国产精品乱子久久久久| 国产自产高清不卡| 欧美乱妇20p| 精品福利二区三区| 国产欧美日韩另类一区| 免费精品视频最新在线| 337p亚洲精品色噜噜| 亚洲一区二区成人在线观看| 97aⅴ精品视频一二三区| 国产精品国产成人国产三级| 国产精品资源在线看| 久久久综合视频| 国产一区二区三区日韩| 日韩精品一区二区三区swag| 日本va欧美va欧美va精品| 欧美视频完全免费看| 亚洲线精品一区二区三区八戒| 91精品福利视频| 一区二区三区四区激情| 一本一道波多野结衣一区二区| 亚洲国产精品二十页| 成人午夜视频免费看| 国产精品欧美精品| 国产成人一级电影| 亚洲日本青草视频在线怡红院| 91网站视频在线观看| 亚洲最新在线观看| 欧美色图在线观看| 九色porny丨国产精品| 久久久国产精华| 色综合久久久久综合| 视频一区中文字幕| 26uuu精品一区二区在线观看| 成人一区二区三区视频在线观看| 综合自拍亚洲综合图不卡区| 在线亚洲免费视频| 蜜臀91精品一区二区三区| 中文字幕第一页久久| 欧美色视频在线观看| 国产精品99久久久久久有的能看 | 亚洲无线码一区二区三区| 国产成人三级在线观看| 中文字幕第一区综合| 欧美裸体bbwbbwbbw| 国产高清在线精品| 毛片不卡一区二区| 亚洲一区在线视频观看| 中文字幕成人网| 日韩一区二区三区视频| 在线观看国产日韩| 97久久精品人人爽人人爽蜜臀| 免费成人在线播放| 亚洲v日本v欧美v久久精品| 欧美国产乱子伦| 久久亚洲影视婷婷| 日韩三级av在线播放| 欧美日韩国产精选| 欧美在线视频你懂得| av成人老司机| 丁香五精品蜜臀久久久久99网站 | 国产一区二区三区在线观看免费| 亚洲一区二区三区爽爽爽爽爽| 国产精品天美传媒| 中日韩免费视频中文字幕| 国产精品视频麻豆| 国产精品护士白丝一区av| 国产精品私人影院| 亚洲欧洲另类国产综合| 国产精品久久综合| 亚洲三级在线观看| 亚洲女同女同女同女同女同69| 亚洲日本在线看| 亚洲精品成人悠悠色影视| 亚洲自拍偷拍av| 日韩二区三区在线观看| 日韩不卡手机在线v区| 麻豆精品在线看| 国产精品一色哟哟哟| av在线这里只有精品| 91国产免费观看| 欧美一区二区三区色| 久久久久国产免费免费| 精品国产91九色蝌蚪| 这里是久久伊人| 久久久精品国产免大香伊| 国产亚洲一区二区在线观看| 中文字幕一区二区三区色视频 | 91精品久久久久久久91蜜桃| 日韩欧美综合一区| 国产精品久久久久毛片软件| 一片黄亚洲嫩模| 激情欧美一区二区| 99久久99久久久精品齐齐| 欧美三级在线视频| 日韩欧美一级片| 亚洲午夜在线视频| 成人午夜又粗又硬又大| 精品视频一区二区不卡| 国产性色一区二区| 五月激情综合网| 99视频超级精品| 久久亚洲捆绑美女| 日韩高清在线电影| 欧美性大战久久久久久久| 天天综合色天天综合色h| 豆国产96在线|亚洲| 91精品国产黑色紧身裤美女| 综合精品久久久| 成人免费视频国产在线观看| 99免费精品视频| 国产欧美日韩三区| 激情伊人五月天久久综合| 制服丝袜亚洲精品中文字幕| 亚洲天堂av一区| av影院午夜一区| 欧美激情一区二区三区蜜桃视频| 久久福利资源站| 日韩欧美不卡在线观看视频| 亚洲高清久久久| 欧美日韩激情在线| 亚洲一区二区中文在线| 欧美性大战久久久久久久蜜臀 | 自拍偷拍欧美精品| 视频一区国产视频| 色猫猫国产区一区二在线视频| 国产精品国产精品国产专区不蜜| 国产成人午夜精品影院观看视频| 久久久久久综合| 成人性色生活片| 亚洲精品videosex极品| 91国产视频在线观看| 日韩国产欧美三级| 精品久久久久久久久久久久久久久久久| 奇米影视在线99精品| 国产日韩欧美高清在线| 99九九99九九九视频精品| 亚洲自拍偷拍网站| 日韩美女视频在线| 成人h动漫精品一区二| 亚洲最大色网站| 日韩一区二区在线观看视频| 精品系列免费在线观看| 国产丝袜在线精品| 欧美日韩一区二区三区四区五区| 免费精品视频最新在线| 欧美经典三级视频一区二区三区| 色哟哟亚洲精品| 精品一区二区免费视频| 亚洲欧美区自拍先锋| 亚洲精品在线网站| 欧洲色大大久久| 国产成人亚洲精品狼色在线| 一区二区三区四区蜜桃| 久久久国际精品| 欧美精选一区二区| 99视频一区二区| 久久99精品久久久久久久久久久久| 国产精品理论片在线观看| 欧美一区午夜精品| 欧美在线免费观看亚洲| 狠狠色丁香婷婷综合久久片| 亚洲精品国产一区二区三区四区在线 | 日本伊人色综合网| 亚洲精品亚洲人成人网| 国产精品网站在线播放| 精品欧美一区二区久久| 欧美日韩日日夜夜|