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

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

?? popcorn.v

?? 這是8位微處理器的Verilog源代碼
?? V
字號:
/*
**  POPCORN
**
**  This core adheres to GNU Public Licence
**  Jeung Joon Lee  ***  www.cmosexod.com
**  joon.lee@quantum.com
**
**	JJL 12/12/98	
**  updated 3/16/2000
**
**  This is an 8 bit general purpose microprocessor.  The architecture
**  is that of a CISC type with accumulator-based operations.
**  The internal data-path is 8 bits, and the external bus is 8.
**  No support for muliply or other complex arithmetic operations are
**  supported (see ALU below).
**
**  Two addressing modes:  immediate and register-direct.f
**  23 instructions are supported
**
**  Instrutions lengths can be 1 or 2 or 3 bytes, which correcponds to
**  executions times of 2, 3 and 4 cycles.

**  to change the address width: from 12 bits to wider:
**  change:
**		AW to desired value (all 3 files)
**		REG_OPHI width definition
**
*/

module popcorn( sys_clk,	// system clock 1Mhz 
				sys_rst,	// system reset active low
				w_acc,		// accumulator write signal, active low
				w_ax,		// AX regster write signal, active low
				w_bx,		// BX "			"			"
				w_p,		// PORT "		"			"
				w_flag,		// FLAG "		"			"			
				bbus_mux,	// bbus mux selector
				alu_func,
				pc_mux,
				addx_mux,
				sp_mux,
				flag_mux,
				w_pc,
				w_sp,
				w_oplo,
				w_ophi,
				w_opl,
				data_bus,				
				addx_bus,
				port,
				reg_opl,
				reg_flag,

                c_bus,
				b_bus,
				d_bus,
				data_bus_wr,
				code_wr_l,
				reg_acc,
				reg_ax,
				reg_bx,
				reg_p
              );

input         		sys_clk,sys_rst,w_acc,w_ax,w_bx,w_p,w_flag;
input         		pc_mux,w_pc,w_oplo,w_ophi,w_opl;
input  [3:0]  		alu_func;
input  [2:0]  		bbus_mux;
input				data_bus_wr;
input				code_wr_l;
output [7:0]	    b_bus,c_bus;
output [11:0]       d_bus;
output [7:0]	    reg_opl;
output [2:0]  		reg_flag;
inout  [7:0]	data_bus;
inout  [7:0]	port;
output [11:0]	addx_bus;
input				sp_mux,w_sp;
input  [1:0]        addx_mux;
input				flag_mux;
output	[7:0]	reg_acc;
output	[7:0]	reg_ax;
output	[7:0]	reg_bx;
output	[7:0]	reg_p;

reg   [7:0] 	reg_ax,reg_bx,reg_acc;
reg   [11:0]		reg_pc, reg_sp;
reg   [7:0]  	reg_opl,reg_oplo,reg_p;
reg   [3:0]         reg_ophi;
reg          		carry,pos,zero,cout;
reg   [7:0] 	b_bus,c_bus;  
reg	  [11:0]		addx_bus;
//reg	  [7:0]		reg_port_dir;
wire  [2:0]  		reg_flag;
wire  [11:0]    	d_bus;
wire  [7:0]		data;
wire  [7:0] 	input_port;
wire				cs_reg_port_dir;
wire 				reg_port_gate;

/*
**  DATA BUS :: bi-directional
**  Output c_bus onto the pad at data_bus_wr == 0
*/
assign data 	= data_bus;		// input
assign data_bus = data_bus_wr ? 8'hzz : c_bus; //output

/*
** REGISTER FILE :: Synchronous to sys_clk 
** There are total of 6 registers 
** 	ACC accumulator 8 bit
**	AX  general purpose register 8 bit
**	BX  general purpose register 8 bit
**	P   I/O port register 4 bit 
*/
always @(posedge sys_clk or negedge sys_rst) 
  if (~sys_rst) 
    reg_p <= 8'h00;
  else if(~w_p)
	reg_p <= c_bus;

always @(posedge sys_clk or negedge sys_rst) 
  if (~sys_rst) 
    reg_ax <= 8'h00;
  else if(~w_ax)
	reg_ax <= c_bus;

always @(posedge sys_clk or negedge sys_rst) 
  if (~sys_rst) 
    reg_bx <= 8'h00;
  else if(~w_bx)
	reg_bx <= c_bus;

always @(posedge sys_clk or negedge sys_rst) 
  if (~sys_rst) 
    reg_acc <= 8'h00;
  else if(~w_acc)
	reg_acc <= c_bus;


/* OPL  :: Synchronous to W_OPL
** Opcode_Latch register 8 bit
** Latched by rising edge of W_OPL
*/
always @(posedge w_opl or negedge sys_rst)
	if(~sys_rst)
		reg_opl <= 8'h00;
	else 
		reg_opl <= data;

/*
** PC:: Synchronous to sys_clk 
** Program Counter 8 bit
**
** Input:   sys_clk : on rising edge, PC is update
**          w_pc    : 1=allow pc to change, 0=pc has its previous 
**                    value
**          pc_mux  : 1=on the rising edge of sys_clk pc=pc+1
**                    0=on the rising edge of sys_clk pc=d_bus
*/
always @(posedge sys_clk or negedge sys_rst)
	if (~sys_rst)
		reg_pc <= 12'h000;   // the reset value must be all 0's 
	else if (~w_pc & pc_mux)
		reg_pc <= reg_pc + 1;
	else if ( ~w_pc & ~pc_mux )
		reg_pc <= d_bus;
	else 
		reg_pc <= reg_pc;

/*
** SP :: Synchrnous to sys_clk
** Stack Pointer
*/
always @(posedge sys_clk or negedge sys_rst)
	if (~sys_rst)
		reg_sp <= 12'hFFF;		// default reset value of sp is 0xFFF
	else if (~w_sp & sp_mux)
		reg_sp <= reg_sp - 1;
	else if ( ~w_sp & ~sp_mux)
		reg_sp <= reg_sp + 1;

/*
** ADDX mux
*/  
always @(addx_mux or reg_pc or reg_sp or d_bus)
	case (addx_mux)
		2'b00: addx_bus <= d_bus;
		2'b01: addx_bus <= reg_pc;
		default: addx_bus <= reg_sp;
	endcase 

/*
** Arithmetic Logic Unit
** This ALU provides 9 funtions:
** 	0	c = a+b
**	1	c = a-b  (a+~b+1)
**	2	c = a&b
**	3	c = a|b
**	4	c = a^b
**	5	c = ~a
**	6	c = a >> 1
**	7	c = a << 1
**	8	c = b
**  else c = a
*/		
always @(reg_acc or b_bus or alu_func) begin
  case (alu_func)
  	4'b0000: {cout,c_bus} <= reg_acc+b_bus;
	4'b0001: {cout,c_bus} <= reg_acc-b_bus;	
	4'b0010: begin c_bus  <= reg_acc&b_bus; cout<=1'b0; end
	4'b0011: begin c_bus  <= reg_acc|b_bus; cout<=1'b0; end
	4'b0100: begin c_bus  <= reg_acc^b_bus; cout<=1'b0; end
	4'b0101: begin c_bus  <= ~reg_acc;	     cout<=1'b0; end 			
	4'b0110: begin c_bus  <= {1'b0,reg_acc[7:1]}; cout<=reg_acc[0]; end	
	4'b0111: begin c_bus  <= {reg_acc[6:0],1'b0}; cout<=reg_acc[7]; end		
	4'b1000: begin c_bus  <= b_bus; cout<=1'b0; end
    default: begin c_bus  <= reg_acc; cout<=1'b0; end						
  endcase  
end

// Define ALU flag register
always @(posedge sys_clk or negedge sys_rst)
	if (~sys_rst) begin
		pos  <= 1'b0;		
		zero <= 1'b0;
		carry <= 1'b0;
	end
	else if ((~w_flag) && (flag_mux==1'b1)) begin
		zero  <= ~( | c_bus );		// zero=1 iff all bits==0
		pos   <= ~(c_bus[7]);   // pos=1  iff msb=0
		carry <= cout;	            // carry , see alu above
	end
	else if ((~w_flag) && (flag_mux==1'b0)) begin
		zero  <= c_bus[5];			// zero=1 iff all bits==0
		pos   <= c_bus[6];			// pos=1  iff msb=0
		carry <= c_bus[7];			// carry , see alu above
	end

assign reg_flag = {carry,pos,zero};

/*
** Define B MUX 
*/
always @(reg_ax or reg_bx or reg_flag or reg_pc or d_bus or reg_p or bbus_mux or input_port)
	case (bbus_mux)		
		3'b001: b_bus <= reg_ax;
		3'b010: b_bus <= reg_bx;
		3'b011: b_bus <= reg_pc[7:0];
		3'b100: b_bus <= {reg_flag,1'b0,reg_pc[11:8]};
		3'b101: b_bus <= input_port;
		3'b110: b_bus <= d_bus[7:0];
		default: b_bus <=d_bus;
	endcase


/*
** Define d_bus
*/
assign d_bus={reg_ophi[3:0],reg_oplo};
always @(posedge w_oplo or negedge sys_rst)
  if (~sys_rst)
    reg_oplo <= 8'h00;  
  else 
    reg_oplo <= data;
always @(posedge w_ophi or negedge sys_rst)
  if (~sys_rst)
    reg_ophi <= 4'b0000;  
  else 
    reg_ophi <= data[3:0];


/*
** Define the PORT register :: Synchronous to sys_clk
*/
/*
assign port[0] = reg_port_dir[0] ? 1'bz : reg_p[0];
assign port[1] = reg_port_dir[1] ? 1'bz : reg_p[1];
assign port[2] = reg_port_dir[2] ? 1'bz : reg_p[2];
assign port[3] = reg_port_dir[3] ? 1'bz : reg_p[3];
assign port[4] = reg_port_dir[4] ? 1'bz : reg_p[4];
assign port[5] = reg_port_dir[5] ? 1'bz : reg_p[5];
assign port[6] = reg_port_dir[6] ? 1'bz : reg_p[6];
assign port[7] = reg_port_dir[7] ? 1'bz : reg_p[7];
*/

assign input_port 	= port;			
//assign port 		= reg_port_gate ? 8'hzz : reg_p;

bufif1(port[0], reg_p[0], reg_port_gate);
bufif1(port[1], reg_p[1], reg_port_gate);
bufif1(port[2], reg_p[2], reg_port_gate);
bufif1(port[3], reg_p[3], reg_port_gate);
bufif1(port[4], reg_p[4], reg_port_gate);
bufif1(port[5], reg_p[5], reg_port_gate);
bufif1(port[6], reg_p[6], reg_port_gate);
bufif1(port[7], reg_p[7], reg_port_gate);

assign reg_port_gate = (bbus_mux[2:0]==3'b101);

/*
assign cs_reg_port_dir = ( ~(addx_bus==12'hD00) | (~code_wr_l) );
always @(posedge cs_reg_port_dir or negedge sys_rst)
	if (~sys_rst)
		reg_port_dir <= 8'h00;
	else
		reg_port_dir <= c_bus;
*/		
endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区在线播| 国产精品一区二区视频| 日韩av电影免费观看高清完整版 | 国产精品久久久久久久久图文区 | 国产91对白在线观看九色| 成年人国产精品| 欧美成人video| 一区二区三区在线不卡| 成人激情小说乱人伦| 欧美一区二区在线免费观看| 亚洲欧洲综合另类在线| 国产成人亚洲精品青草天美| 欧美一区二区三区在线观看| 一区二区高清视频在线观看| www.色综合.com| 亚洲国产精品v| 国产精品亚洲第一区在线暖暖韩国| 精品视频一区二区三区免费| 亚洲欧美自拍偷拍| 成人精品免费看| 久久久欧美精品sm网站| 激情小说欧美图片| 日韩欧美在线一区二区三区| 日本不卡123| 欧美精品123区| 日韩精品一二三区| 制服丝袜中文字幕亚洲| 五月综合激情网| 欧美性受xxxx黑人xyx性爽| 亚洲欧美日韩成人高清在线一区| 国产a区久久久| 欧美国产在线观看| 成人激情开心网| 中文字幕一区二区三区四区| 99视频精品全部免费在线| 国产精品乱码一区二三区小蝌蚪| 国产精品香蕉一区二区三区| 国产丝袜在线精品| 成人精品国产一区二区4080| 国产精品国产三级国产aⅴ无密码| 国产黄色91视频| 亚洲视频一区二区在线观看| 色婷婷精品大在线视频| 五月天激情综合| 日韩精品中文字幕一区二区三区| 久久成人免费网站| 国产欧美日韩不卡免费| www.亚洲在线| 亚洲va欧美va国产va天堂影院| 日韩一级二级三级| 韩日欧美一区二区三区| 最新中文字幕一区二区三区| 91国产福利在线| 精品一区二区三区在线播放视频| 国产三级精品视频| 欧美中文字幕久久| 久久精品二区亚洲w码| 中文字幕欧美区| 久久久久国产精品麻豆ai换脸| 久久久精品天堂| 国产精品二三区| 欧美优质美女网站| 中文字幕中文字幕一区二区| av在线不卡免费看| 五月天亚洲精品| 国产欧美在线观看一区| 国产欧美日韩在线| 欧美日韩黄色影视| 欧美日本在线播放| 欧美视频精品在线观看| 欧美日韩一卡二卡| 欧美亚洲一区三区| 欧美性生活影院| 欧美日韩一级片网站| 欧美吻胸吃奶大尺度电影| 欧美综合久久久| 欧洲精品一区二区| 欧美自拍偷拍午夜视频| 欧美日韩一级大片网址| 欧美三级电影精品| 欧美日韩成人综合在线一区二区| 欧美少妇性性性| 制服.丝袜.亚洲.中文.综合| 欧美精品aⅴ在线视频| 日韩一区二区在线观看视频| 欧美成人激情免费网| 久久在线观看免费| 日本一二三不卡| 中文字幕一区二区三区在线不卡 | 东方aⅴ免费观看久久av| 福利一区福利二区| 97久久精品人人做人人爽| 在线视频国内自拍亚洲视频| 欧美精品日韩精品| 久久久久久久综合狠狠综合| 国产欧美日韩综合| 亚洲欧美日韩国产一区二区三区| 亚洲va欧美va人人爽| 久久精品国产一区二区| 国产成人精品一区二| 色综合视频在线观看| 91精品久久久久久久91蜜桃| 精品99999| 亚洲视频免费观看| 视频一区二区三区中文字幕| 国内久久精品视频| 色香蕉成人二区免费| 日韩一区二区三区四区| 国产女同互慰高潮91漫画| 亚洲精品中文字幕在线观看| 蜜臀av性久久久久av蜜臀妖精| 国产成人日日夜夜| 欧美午夜理伦三级在线观看| 久久网这里都是精品| 亚洲与欧洲av电影| 国产伦精品一区二区三区免费迷| 97久久超碰精品国产| 日韩欧美在线网站| 亚洲日本护士毛茸茸| 精品一区二区免费在线观看| 色狠狠一区二区三区香蕉| 日韩精品在线一区二区| 亚洲免费伊人电影| 国产一区二区三区日韩| 欧美三电影在线| 国产精品久久精品日日| 另类小说综合欧美亚洲| 色偷偷久久一区二区三区| 久久丝袜美腿综合| 天天综合色天天| 91在线观看视频| 精品成人一区二区三区四区| 午夜伦理一区二区| 91麻豆成人久久精品二区三区| 日韩精品一区二区三区四区视频 | 欧美一卡二卡三卡| 亚洲欧美另类综合偷拍| 国内成+人亚洲+欧美+综合在线 | 99麻豆久久久国产精品免费| 日韩视频中午一区| 亚洲第一av色| 91小视频在线| 国产精品国产自产拍在线| 国内精品久久久久影院色| 欧美人牲a欧美精品| 亚洲最大色网站| 91毛片在线观看| 国产精品乱码久久久久久| 经典三级一区二区| 欧美一个色资源| 亚洲第一激情av| 欧美在线不卡一区| 亚洲婷婷国产精品电影人久久| 国产精品一区二区三区网站| 精品va天堂亚洲国产| 久久国产精品色婷婷| 日韩色在线观看| 日本va欧美va瓶| 91精品欧美一区二区三区综合在| 亚洲一区二区三区中文字幕在线| 91网址在线看| 一区二区三区久久| 欧洲中文字幕精品| 亚洲高清不卡在线观看| 欧美日韩国产一区| 亚洲国产一区在线观看| 欧美性三三影院| 日韩国产精品大片| 日韩美女在线视频| 国产精品996| 亚洲国产成人午夜在线一区| 懂色中文一区二区在线播放| 国产精品激情偷乱一区二区∴| 99久久免费国产| 亚洲激情第一区| 欧美日韩中文国产| 美女视频黄免费的久久 | 国产精品99精品久久免费| 久久久www成人免费无遮挡大片| 韩国毛片一区二区三区| 久久精品一区蜜桃臀影院| 国产成人在线视频网站| 中文字幕+乱码+中文字幕一区| 成人av网站免费观看| 亚洲精品免费在线| 91 com成人网| 国产精品亚洲成人| 亚洲人成伊人成综合网小说| 在线精品国精品国产尤物884a| 日韩**一区毛片| 国产欧美精品一区二区三区四区 | 在线观看视频一区| 天堂精品中文字幕在线| 欧美mv和日韩mv的网站| 成人激情午夜影院| 午夜日韩在线观看| 欧美国产亚洲另类动漫| 色综合欧美在线视频区| 免费av网站大全久久| 欧美激情一区二区|