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

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

?? generic_spram.v

?? 《FPGA數字電子系統設計與開發實例導航》的配套光盤
?? V
字號:

`include "timescale.v"

//`define VENDOR_XILINX
//`define VENDOR_ALTERA
`define VENDOR_FPGA

module generic_spram(
	// Generic synchronous single-port RAM interface
	clk, rst, ce, we, oe, addr, di, do
);

	//
	// Default address and data buses width
	//
	parameter aw = 6; //number of address-bits
	parameter dw = 8; //number of data-bits

	//
	// Generic synchronous single-port RAM interface
	//
	input           clk;  // Clock, rising edge
	input           rst;  // Reset, active high
	input           ce;   // Chip enable input, active high
	input           we;   // Write enable input, active high
	input           oe;   // Output enable input, active high
	input  [aw-1:0] addr; // address bus inputs
	input  [dw-1:0] di;   // input data bus
	output [dw-1:0] do;   // output data bus

	//
	// Module body
	//

`ifdef VENDOR_FPGA
	//
	// Instantiation synthesizeable FPGA memory
	//
	// This code has been tested using LeonardoSpectrum and Synplicity.
	// The code correctly instantiates Altera EABs and Xilinx BlockRAMs.
	//

	// NOTE:
	// 'synthesis syn_ramstyle="block_ram"' is a Synplify attribute.
	// It instructs Synplify to map to BlockRAMs instead of the default SelectRAMs

	reg [dw-1:0] mem [(1<<aw) -1:0] /* synthesis syn_ramstyle="block_ram" */;
	reg [aw-1:0] ra;

	// read operation
	always @(posedge clk)
	  if (ce)
	    ra <= #1 addr;     // read address needs to be registered to read clock

	assign #1 do = mem[ra];

	// write operation
	always @(posedge clk)
	  if (we && ce)
	    mem[addr] <= #1 di;
`else

`ifdef VENDOR_XILINX

	wire [dw-1:0] q;  // output from xilinx ram
	//
	// Instantiation of FPGA memory:
	//
	// Virtex/Spartan2 BlockRAMs
	//
	xilinx_ram_sp xilinx_ram(
		.clk(clk),
		.rst(rst),
		.addr(addr),
		.di(di),
		.en(ce),
		.we(we),
		.do(do)
	);

	defparam
		xilinx_ram.dwidth = dw,
		xilinx_ram.awidth = aw;

`else

`ifdef VENDOR_ALTERA

	//
	// Instantiation of FPGA memory:
	//
	// Altera FLEX EABs
	//

	altera_ram_sp altera_ram(
		.inclock(clk),
		.address(addr),
		.data(di),
		.we(we && ce),
		.q(do)
	);

	defparam
		altera_ram.dwidth = dw,
		altera_ram.awidth = aw;

`else

`ifdef VENDOR_ARTISAN

	//
	// Instantiation of ASIC memory:
	//
	// Artisan Synchronous Single-Port RAM (ra1sh)
	//
	artisan_ssp #(dw, 1<<aw, aw) artisan_ssp(
		.CLK(clk),
		.CEN(~ce),
		.WEN(~we),
		.A(addr),
		.D(di),
		.OEN(~oe),
		.Q(do)
	);

`else

`ifdef VENDOR_AVANT

	//
	// Instantiation of ASIC memory:
	//
	// Avant! Asynchronous Two-Port RAM
	//
	avant_atp avant_atp(
		.web(~we),
		.reb(),
		.oeb(~oe),
		.rcsb(),
		.wcsb(),
		.ra(addr),
		.wa(addr),
		.di(di),
		.do(do)
	);

`else

`ifdef VENDOR_VIRAGE

	//
	// Instantiation of ASIC memory:
	//
	// Virage Synchronous 1-port R/W RAM
	//
	virage_ssp virage_ssp(
		.clk(clk),
		.adr(addr),
		.d(di),
		.we(we),
		.oe(oe),
		.me(ce),
		.q(do)
	);

`else

`ifdef VENDOR_VIRTUALSILICON

	//
	// Instantiation of ASIC memory:
	//
	// Virtual Silicon Single-Port Synchronous SRAM
	//
	virtualsilicon_spram #(1<<aw, aw-1, dw-1) virtualsilicon_ssp(
		.CK(clk),
		.ADR(addr),
		.DI(di),
		.WEN(~we),
		.CEN(~ce),
		.OEN(~oe),
		.DOUT(do)
	);

`else

	//
	// Generic single-port synchronous RAM model
	//

	//
	// Generic RAM's registers and wires
	//
	reg  [dw-1:0] mem [(1<<aw)-1:0];	// RAM content
	wire [dw-1:0] q;                 // RAM output
	reg  [aw-1:0] raddr;             // RAM read address
	//
	// Data output drivers
	//
	assign do = (oe) ? q : {dw{1'bz}};

	//
	// RAM read and write
	//

	// read operation
	always@(posedge clk)
	if (ce) // && !we)
		raddr <= #1 addr;    // read address needs to be registered to read clock

	assign #1 q = rst ? {dw{1'b0}} : mem[raddr];

	// write operation
	always@(posedge clk)
		if (ce && we)
			mem[addr] <= #1 di;


`endif // !VIRTUALSILICON_SSP
`endif // !VIRAGE_SSP
`endif // !AVANT_ATP
`endif // !ARTISAN_SSP
`endif // !VENDOR_ALTERA
`endif // !VENDOR_XILINX
`endif // !VENDOR_FPGA

endmodule


//
// Black-box modules
//

`ifdef VENDOR_ALTERA
	module altera_ram_sp (
		address,
		inclock,
		we,
		data,
		q) /* synthesis black_box */;

		parameter awidth = 7;
		parameter dwidth = 8;

		input  [awidth -1:0] address;
		input                inclock;
		input                we;
		input  [dwidth -1:0] data;
		output [dwidth -1:0] q;

		// synopsis translate_off
		// exemplar translate_off

		syn_ram_irou #(
			"UNUSED",
			dwidth,
			awidth,
			1 << awidth
		)
		altera_spram_model (
			.Inclock(inclock),
			.Address(address),
			.Data(data),
			.WE(we),
			.Q(q)
		);

		// exemplar translate_on
		// synopsis translate_on

	endmodule
`endif // VENDOR_ALTERA

`ifdef VENDOR_XILINX
	module xilinx_ram_sp (
			clk,
			rst,
			addr,
			di,
			en,
			we,
			do) /* synthesis black_box */ ;

		parameter awidth = 7;
		parameter dwidth = 8;

		input                clk;
		input                rst;
		input  [awidth -1:0] addr;
		input  [dwidth -1:0] di;
		input                en;
		input                we;
		output [dwidth -1:0] do;

		// insert simulation model


		// synopsys translate_off
		// exemplar translate_off

		C_MEM_SP_BLOCK_V1_0 #(
			awidth,
			1,
			"0",
			1 << awidth,
			1,
			1,
			1,
			1,
			1,
			1,
			1,
			"",
			16,
			0,
			0,
			1,
			1,
			dwidth
		)
		xilinx_spram_model (
			.CLK(clk),
			.RST(rst),
			.ADDR(addr),
			.DI(di),
			.EN(en),
			.WE(we),
			.DO(do)
		);

		// exemplar translate_on
		// synopsys translate_on

	endmodule
`endif // VENDOR_XILINX

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一二三四区精品视频| 国产精品久久久久桃色tv| 99精品国产视频| 成人免费看片app下载| 国产激情视频一区二区在线观看 | 极品少妇一区二区三区精品视频 | 福利电影一区二区| 国产xxx精品视频大全| 粉嫩在线一区二区三区视频| 成人午夜又粗又硬又大| 成人美女在线视频| 99国产精品久久久久久久久久 | 欧美一区二区在线免费观看| 51精品秘密在线观看| 欧美成人精品二区三区99精品| 日韩一级大片在线观看| 精品国内二区三区| 国产精品久久久久久亚洲毛片| 日韩美女视频19| 亚洲午夜精品网| 国产在线视视频有精品| 成人黄色一级视频| 欧美猛男gaygay网站| 日韩三级视频中文字幕| 国产精品人成在线观看免费| 亚洲图片欧美视频| 国产揄拍国内精品对白| 91最新地址在线播放| 欧美日韩亚洲综合| 国产视频一区不卡| 性做久久久久久久久| 国产精品一区二区久激情瑜伽| 91国在线观看| 国产欧美视频一区二区| 亚洲国产日韩综合久久精品| 国产一区二区三区四区五区美女| 91亚洲精品久久久蜜桃网站| 欧美一卡在线观看| 亚洲视频每日更新| 狠狠色丁香婷婷综合| 欧美人体做爰大胆视频| 欧美激情一区不卡| 久久国产福利国产秒拍| 97久久超碰精品国产| 精品久久久久久亚洲综合网| 亚洲制服欧美中文字幕中文字幕| 国产精品自产自拍| 91.xcao| 一区二区三区在线观看网站| 国产精品一卡二卡在线观看| 91麻豆精品国产91久久久久久 | 天天av天天翘天天综合网色鬼国产| 国产福利精品一区| 欧美va亚洲va在线观看蝴蝶网| 亚洲精品乱码久久久久久| 国产盗摄一区二区| 久久久久久久综合狠狠综合| 奇米影视7777精品一区二区| 91极品视觉盛宴| 亚洲三级电影全部在线观看高清| 国产成人在线视频网址| 欧美成人免费网站| 久久精品国产久精国产爱| 欧美日韩精品欧美日韩精品一综合| 一色屋精品亚洲香蕉网站| 国产高清久久久久| 国产欧美精品区一区二区三区 | 国产精品久久久久永久免费观看| 久久97超碰国产精品超碰| 欧美调教femdomvk| 亚洲综合网站在线观看| 色综合久久天天| 亚洲日本在线观看| 色婷婷久久综合| 亚洲天堂精品视频| 色婷婷国产精品久久包臀 | 777亚洲妇女| 日韩av中文字幕一区二区三区| 69堂亚洲精品首页| 日本网站在线观看一区二区三区| 7777女厕盗摄久久久| 日韩av中文在线观看| 91精品国产一区二区三区蜜臀| 日本不卡一区二区三区高清视频| 在线播放中文一区| 久久国产剧场电影| 中文字幕国产一区| 色婷婷激情一区二区三区| 天堂成人免费av电影一区| 精品国产一区久久| 成人免费视频app| 亚洲综合999| 欧美一区午夜精品| 大白屁股一区二区视频| 日韩美女啊v在线免费观看| 欧美日韩国产一级二级| 国产一区二区三区美女| 欧美高清在线精品一区| 在线观看国产日韩| 精品中文字幕一区二区小辣椒| 久久精品水蜜桃av综合天堂| 99re热视频这里只精品| 日韩成人免费看| 国产精品久久久久一区| 欧美日韩一本到| 成人免费视频一区| 亚洲国产精品自拍| 国产欧美一区二区精品仙草咪| 欧美午夜电影网| 国产黄色精品网站| 天天综合网天天综合色| 国产精品毛片高清在线完整版 | 成人在线视频一区| 亚洲福利视频三区| 国产欧美日韩三级| 欧美乱妇20p| 91麻豆精品一区二区三区| 免费精品视频最新在线| 亚洲婷婷综合色高清在线| 欧美一区二区三区免费在线看| 99久久精品99国产精品| 黄网站免费久久| 五月激情综合色| 亚洲精品国产品国语在线app| 26uuu亚洲综合色| 欧美日韩精品专区| 一本色道久久加勒比精品 | 亚洲夂夂婷婷色拍ww47| 日本一区二区三区在线观看| 91麻豆精品国产91久久久资源速度| 成人av在线资源网| 国产a区久久久| 国产一区不卡视频| 精品制服美女久久| 蜜臀久久久99精品久久久久久| 亚洲精品ww久久久久久p站| 国产欧美日韩在线视频| 精品国产a毛片| 精品少妇一区二区三区视频免付费 | 成人免费视频播放| 国产精品一区二区三区乱码 | 97精品视频在线观看自产线路二| 久88久久88久久久| 久久99国产精品免费| 久久丁香综合五月国产三级网站| 亚洲高清视频的网址| 亚洲二区在线视频| 亚洲高清免费在线| 婷婷亚洲久悠悠色悠在线播放| 亚洲午夜在线视频| 日韩在线a电影| 日本亚洲天堂网| 久久国产精品72免费观看| 捆绑调教一区二区三区| 久久电影网站中文字幕| 国产一区二区在线观看视频| 国产一区二三区| 成人h动漫精品| 91猫先生在线| 777色狠狠一区二区三区| 欧美一二三区在线观看| 精品第一国产综合精品aⅴ| 久久亚洲综合色| 国产精品乱码一区二区三区软件| 国产精品国模大尺度视频| 亚洲欧洲在线观看av| 亚洲激情欧美激情| 蜜臀久久99精品久久久久久9| 久久精品国产精品亚洲红杏| 精东粉嫩av免费一区二区三区| 丰满亚洲少妇av| 在线中文字幕一区| 日韩精品自拍偷拍| 国产日韩精品久久久| 亚洲欧美乱综合| 蜜桃av一区二区在线观看| 国产伦精品一区二区三区免费| jiyouzz国产精品久久| 欧美日韩三级一区二区| 亚洲精品在线电影| 日韩毛片精品高清免费| 日韩成人av影视| 99精品桃花视频在线观看| 欧美日韩成人综合| 国产网红主播福利一区二区| 亚洲欧美另类综合偷拍| 久久99深爱久久99精品| 91香蕉国产在线观看软件| 欧美一区中文字幕| 亚洲裸体xxx| 狠狠久久亚洲欧美| 欧美日韩视频第一区| 国产精品久久久久久久久免费丝袜| 丝袜亚洲另类欧美综合| 91尤物视频在线观看| 精品黑人一区二区三区久久| 一区二区不卡在线播放 | 亚洲精品第一国产综合野| 美女国产一区二区| 一本大道久久a久久综合婷婷|