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

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

?? avalon_slave_if.v

?? Altera的基于NIOS II的LCD控制器源代碼
?? V
?? 第 1 頁 / 共 2 頁
字號:
// ================================================================================
// (c) 2004 Altera Corporation. All rights reserved.
// Altera products are protected under numerous U.S. and foreign patents, maskwork
// rights, copyrights and other intellectual property laws.
// 
// This reference design file, and your use thereof, is subject to and governed
// by the terms and conditions of the applicable Altera Reference Design License
// Agreement (either as signed by you, agreed by you upon download or as a
// "click-through" agreement upon installation andor found at www.altera.com).
// By using this reference design file, you indicate your acceptance of such terms
// and conditions between you and Altera Corporation.  In the event that you do
// not agree with such terms and conditions, you may not use the reference design
// file and please promptly destroy any copies you have made.
// 
// This reference design file is being provided on an "as-is" basis and as an
// accommodation and therefore all warranties, representations or guarantees of
// any kind (whether express, implied or statutory) including, without limitation,
// warranties of merchantability, non-infringement, or fitness for a particular
// purpose, are specifically disclaimed.  By making this reference design file
// available, Altera expressly does not recommend, suggest or require that this
// reference design file be used in combination with any other product not
// provided by Altera.
// ================================================================================
/*
 Avalon Slave Interface
 Implements control, address and count registesr.
 Peripheral controlled wait states to allow for different clock domains
 Registers in pixel clock domain, assumed to have 0 wait states.
 Registers required to support
- layer_X_on (control_reg)

VGA Timing
- PinP for layer1-4

Pixel Engine
- layer_X constant alpha
- Background value

Avalon master, one each for each master
- DMA start address
- DMA length
- DMA enable (to be set prior to enabling the layer to allow DMA to pre-fill the FIFO
- DMA active length - to be used with the windowing function
- DMA active start - to be used with the windowing function

Status registers, in addition to readback of value set above
- DMA FIFO Underflow
- DMA FIFO Overflow
- others?

Interrupts?
*/

module avalon_slave_if (
  reset_n,
  pixel_clk,
  clk_av,  //Avalon clock
//Avalon Slave Interface
  s_address,
  s_chipselect,
  s_read_n,
  s_write_n,
  s_writedata,
  s_waitrequest,
  s_readdata,
  int,
//Outputs to rest of LCD Controller
  const_alpha_lay1,
  const_alpha_lay2,
  const_alpha_lay3,
  const_alpha_lay4,
  background,
  layer_0_on,
  layer_1_on,
  layer_2_on,
  layer_3_on,
  layer_4_on,
  win_l1_h_start,
  win_l1_h_stop,
  win_l1_v_start,
  win_l1_v_stop,
  win_l2_h_start,
  win_l2_h_stop,
  win_l2_v_start,
  win_l2_v_stop,
  win_l3_h_start,
  win_l3_h_stop,
  win_l3_v_start,
  win_l3_v_stop,
  win_l4_h_start,
  win_l4_h_stop,
  win_l4_v_start,
  win_l4_v_stop,
  layer_0_dma_start_addr,
  layer_0_dma_length,
  layer_1_dma_start_addr,
  layer_1_dma_length,
  layer_2_dma_start_addr,
  layer_2_dma_length,
  layer_3_dma_start_addr,
  layer_3_dma_length,
  layer_4_dma_start_addr,
  layer_4_dma_length,
  dma_layer_0_on,
  dma_layer_1_on,
  dma_layer_2_on,
  dma_layer_3_on,
  dma_layer_4_on,
  vblank,
  end_of_picture
);

input reset_n;
input pixel_clk;
input clk_av;
input vblank;
input end_of_picture;

// Avalon DMA register slave
input [5:0] s_address;
input s_chipselect;
input s_read_n;
input s_write_n;
input [31:0] s_writedata;
output s_waitrequest;
output [31:0] s_readdata;
output int; //interrupt output

//Outputs to LCD Controller
output [5:0] const_alpha_lay1;
output [5:0] const_alpha_lay2;
output [5:0] const_alpha_lay3;
output [5:0] const_alpha_lay4;
output [15:0] background;
output layer_0_on;
output layer_1_on;
output layer_2_on;
output layer_3_on;
output layer_4_on;
output [11:0] win_l1_h_start;
output [11:0] win_l1_h_stop;
output [11:0] win_l1_v_start;
output [11:0] win_l1_v_stop;
output [11:0] win_l2_h_start;
output [11:0] win_l2_h_stop;
output [11:0] win_l2_v_start;
output [11:0] win_l2_v_stop;
output [11:0] win_l3_h_start;
output [11:0] win_l3_h_stop;
output [11:0] win_l3_v_start;
output [11:0] win_l3_v_stop;
output [11:0] win_l4_h_start;
output [11:0] win_l4_h_stop;
output [11:0] win_l4_v_start;
output [11:0] win_l4_v_stop;

output [31:0] layer_0_dma_start_addr;
output [31:0] layer_0_dma_length;
output [31:0] layer_1_dma_start_addr;
output [31:0] layer_1_dma_length;
output [31:0] layer_2_dma_start_addr;
output [31:0] layer_2_dma_length;
output [31:0] layer_3_dma_start_addr;
output [31:0] layer_3_dma_length;
output [31:0] layer_4_dma_start_addr;
output [31:0] layer_4_dma_length;
output dma_layer_0_on;
output dma_layer_1_on;
output dma_layer_2_on;
output dma_layer_3_on;
output dma_layer_4_on;


reg [4:0] control_reg;
reg [5:0] const_alpha_lay1_reg;
reg [5:0] const_alpha_lay2_reg;
reg [5:0] const_alpha_lay3_reg;
reg [5:0] const_alpha_lay4_reg;
reg [15:0] background_reg;
reg [11:0] win_l1_h_start_reg;
reg [11:0] win_l1_h_stop_reg;
reg [11:0] win_l1_v_start_reg;
reg [11:0] win_l1_v_stop_reg;
reg [11:0] win_l2_h_start_reg;
reg [11:0] win_l2_h_stop_reg;
reg [11:0] win_l2_v_start_reg;
reg [11:0] win_l2_v_stop_reg;
reg [11:0] win_l3_h_start_reg;
reg [11:0] win_l3_h_stop_reg;
reg [11:0] win_l3_v_start_reg;
reg [11:0] win_l3_v_stop_reg;
reg [11:0] win_l4_h_start_reg;
reg [11:0] win_l4_h_stop_reg;
reg [11:0] win_l4_v_start_reg;
reg [11:0] win_l4_v_stop_reg;

reg [31:0] layer_0_dma_start_addr_reg;
reg [31:0] layer_0_dma_length_reg;
reg [31:0] layer_1_dma_start_addr_reg;
reg [31:0] layer_1_dma_length_reg;
reg [31:0] layer_2_dma_start_addr_reg;
reg [31:0] layer_2_dma_length_reg;
reg [31:0] layer_3_dma_start_addr_reg;
reg [31:0] layer_3_dma_length_reg;
reg [31:0] layer_4_dma_start_addr_reg;
reg [31:0] layer_4_dma_length_reg;
reg [4:0] dma_control_reg;
reg [31:0] status_reg;
reg int_enable_reg;
reg int_clear_reg;
reg int_status_reg;

reg int;

reg [31:0] 	s_readdata;

// s_waitrequest generation - START
// synchronistion across clock boundary
reg s_waitrequest; //avalon clock domain
wire waitrequest_off; //avalon clock domain
reg waitrequest_pclk_1; //pixel clock domain
reg waitrequest_pclk_2; //pixel clock domain
reg waitrequest_avclk_1; //avalon clock domain
reg waitrequest_avclk_2; //avalon clock domain

always @(s_chipselect or waitrequest_off)
 if (s_chipselect & ~waitrequest_off)
  s_waitrequest = 1'b1; //insert wait states
 else if (s_chipselect & waitrequest_off)
  s_waitrequest = 1'b0; //transfer complete
 else
  s_waitrequest = 1'b0;
  
//sync waitrequest to pixel clock domain
always @(posedge pixel_clk or posedge waitrequest_off)
 if (waitrequest_off)
  begin
   waitrequest_pclk_1 <= 1'b0;
   waitrequest_pclk_2 <= 1'b0;
  end
 else
  begin
   waitrequest_pclk_1 <= s_waitrequest;
   waitrequest_pclk_2 <= waitrequest_pclk_1;
  end

//sync waitrequest_pclk_2 to avalon clock domain
always @(posedge clk_av or negedge reset_n)
 if (~reset_n)
  begin
   waitrequest_avclk_1 <= 1'b0;
   waitrequest_avclk_1 <= 1'b0;
  end
 else if (waitrequest_off)
  begin
   waitrequest_avclk_1 <= 1'b0;
   waitrequest_avclk_2 <= 1'b0;
  end
 else
  begin
   waitrequest_avclk_1 <= waitrequest_pclk_2;
   waitrequest_avclk_2 <= waitrequest_avclk_1;
  end

assign waitrequest_off = waitrequest_avclk_1 & waitrequest_avclk_2;

// s_waitrequest generation - END

//Interrupt generation
always @(end_of_picture or int_clear_reg or int_enable_reg or reset_n)
 if (~reset_n || int_clear_reg)
  int <= 0;
 else if (end_of_picture && int_enable_reg)
  int <= 1; //set interrupt only if enabled


//add register for int_status, int_clear, int_enable


always @(posedge clk_av or negedge reset_n)
 if (~reset_n)
  int_enable_reg <= 1'b0;
 else if (s_chipselect & ~s_write_n & (s_address == 6'd33))
  int_enable_reg <= s_writedata[0];

always @(posedge clk_av or negedge reset_n)
 if (~reset_n)
  int_clear_reg <= 1'b0;
 else if (s_chipselect & ~s_write_n & (s_address == 6'd34))
  int_clear_reg <= s_writedata[0];
 else
  int_clear_reg <= 1'b0;

always @(int)
  int_status_reg <= int;
  

//Register Bank - START
always @(posedge clk_av or negedge reset_n)
 if (~reset_n)
  control_reg <= 5'b0;
 else if (s_chipselect & ~s_write_n & (s_address == 6'd00))
  control_reg <= s_writedata[4:0];

assign layer_0_on = control_reg[0];
assign layer_1_on = control_reg[1];
assign layer_2_on = control_reg[2];
assign layer_3_on = control_reg[3];
assign layer_4_on = control_reg[4];

always @(posedge clk_av or negedge reset_n)
 if (~reset_n)
  const_alpha_lay1_reg <= 6'b0;
 else if (s_chipselect & ~s_write_n & (s_address == 6'd01))
  const_alpha_lay1_reg <= s_writedata[5:0];

assign const_alpha_lay1 = const_alpha_lay1_reg[5:0];

always @(posedge clk_av or negedge reset_n)
 if (~reset_n)
  const_alpha_lay2_reg <= 6'b0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品免费久久| 日本一区二区在线不卡| 色综合中文字幕国产| 精品一区在线看| 老司机午夜精品| 激情丁香综合五月| 国产一区二区三区免费看 | 国产精品久久精品日日| 国产亚洲欧美日韩俺去了| 久久奇米777| 欧美激情中文不卡| 日韩毛片精品高清免费| 一区二区三区在线观看视频| 亚洲一区在线视频观看| 日韩电影一区二区三区四区| 久久成人久久鬼色| 成人网男人的天堂| 色成人在线视频| 91精品国产欧美一区二区| 精品福利av导航| 国产精品视频yy9299一区| 亚洲靠逼com| 天天综合日日夜夜精品| 韩国精品免费视频| 99久久精品免费看| 欧美日本韩国一区二区三区视频 | 欧美日韩高清一区二区不卡| 日韩一区二区三区观看| 国产精品色婷婷久久58| 亚洲国产精品欧美一二99| 久久国产精品99久久人人澡| 成人国产精品免费| 欧美精品第一页| 国产精品青草综合久久久久99| 又紧又大又爽精品一区二区| 水蜜桃久久夜色精品一区的特点| 国精产品一区一区三区mba视频| 成a人片国产精品| 欧美一区二区三区视频在线| 国产精品每日更新| 久久精品国产久精国产| 色综合天天综合网天天狠天天| 制服丝袜激情欧洲亚洲| 中文字幕一区二区三区av| 日本一区中文字幕| 色婷婷综合久久久| 国产亚洲福利社区一区| 日韩av一级电影| 在线观看一区不卡| 中文字幕免费不卡| 久久av资源站| 在线播放91灌醉迷j高跟美女 | 久久精品国产第一区二区三区| 91亚洲国产成人精品一区二三| 日韩精品一区二区三区中文不卡 | 中文字幕亚洲精品在线观看| 热久久免费视频| 欧美自拍偷拍午夜视频| 国产精品嫩草影院com| 九九**精品视频免费播放| 欧美日韩亚洲综合| 一区二区三区欧美日韩| 97久久精品人人做人人爽50路| 久久影院视频免费| 精品一区二区免费| 日韩欧美高清在线| 美日韩黄色大片| 91精品国产综合久久久蜜臀粉嫩 | 91精品久久久久久蜜臀| 亚洲国产另类av| 欧美在线不卡视频| 亚洲精品国产成人久久av盗摄| 成人av午夜影院| 亚洲视频1区2区| 91免费观看国产| 自拍偷拍欧美激情| 91免费视频网址| 一区二区三区在线免费播放 | 亚洲一区二区视频在线观看| 91视频在线观看| 一区二区三区欧美亚洲| 91福利在线播放| 亚洲第一成人在线| 欧美一区三区四区| 天天操天天干天天综合网| 在线综合视频播放| 久久av老司机精品网站导航| 日韩免费电影网站| 国产精品自拍在线| 国产精品视频你懂的| 不卡一区中文字幕| 一区二区视频在线| 91麻豆精品91久久久久久清纯| 久久国产人妖系列| 国产欧美日韩在线视频| 色av成人天堂桃色av| 午夜成人免费视频| 欧美精品一区在线观看| 不卡av电影在线播放| 亚洲电影中文字幕在线观看| 欧美日韩免费一区二区三区| 日本不卡一区二区| 中日韩av电影| 欧美美女bb生活片| 国产精品白丝av| 一区二区免费在线| 久久人人超碰精品| 91国产视频在线观看| 精品一区二区三区在线播放视频 | 日本少妇一区二区| 国产蜜臀av在线一区二区三区| 91麻豆自制传媒国产之光| 日本亚洲天堂网| 亚洲天堂网中文字| 精品久久久久久最新网址| 色综合中文字幕国产 | 欧美tk—视频vk| 色综合 综合色| 狂野欧美性猛交blacked| 国产精品免费久久| 日韩一级完整毛片| 色婷婷综合久久久中文一区二区| 秋霞电影一区二区| 亚洲激情中文1区| 国产亚洲精品免费| 欧美一级欧美三级| 在线亚洲一区二区| 成人午夜免费av| 精品一区二区三区的国产在线播放 | 美女视频免费一区| 一区二区三区欧美日| 国产精品人妖ts系列视频| 精品蜜桃在线看| 欧美日韩三级一区二区| heyzo一本久久综合| 国产精品一区二区久激情瑜伽| 天堂va蜜桃一区二区三区| 亚洲色图欧美激情| 欧美国产亚洲另类动漫| 日韩欧美一区二区视频| 欧美精品一卡二卡| 欧美四级电影网| 色激情天天射综合网| 本田岬高潮一区二区三区| 国产精品一区二区视频| 国模冰冰炮一区二区| 久久精品久久综合| 美腿丝袜亚洲色图| 蜜臀av性久久久久av蜜臀妖精| 亚洲va欧美va人人爽午夜| 亚洲综合久久av| 亚洲一区二区三区在线看| 亚洲免费观看高清完整版在线观看 | 国产欧美日韩视频一区二区 | 欧美色图一区二区三区| 粉嫩嫩av羞羞动漫久久久 | 国产精品麻豆久久久| 国产精品丝袜一区| 综合激情成人伊人| 亚洲品质自拍视频| 夜色激情一区二区| 亚洲小说欧美激情另类| 亚洲一区二区精品久久av| 亚洲成人在线观看视频| 日韩高清在线观看| 麻豆成人综合网| 国产高清久久久| a美女胸又www黄视频久久| 色婷婷精品久久二区二区蜜臀av| 色偷偷88欧美精品久久久| 欧美图片一区二区三区| 欧美一区二区在线播放| 欧美成人精品高清在线播放| 久久免费的精品国产v∧| 国产精品久久久久久久久免费相片 | 97成人超碰视| 欧美精品在线观看播放| 欧美精品一区二区三区久久久| 中文天堂在线一区| 亚洲伊人伊色伊影伊综合网| 日韩国产欧美在线播放| 国产精品主播直播| 91成人看片片| 精品久久久久一区二区国产| 国产精品麻豆99久久久久久| 亚洲国产精品影院| 狠狠色综合播放一区二区| 99久免费精品视频在线观看 | 国产精品一区二区三区网站| 99视频有精品| 欧美成人a视频| 夜夜嗨av一区二区三区| 国产一区二区三区四区在线观看| 91视频精品在这里| 精品少妇一区二区三区视频免付费| 国产欧美一区二区精品忘忧草| 亚洲成av人片| 成人av综合一区| 久久久一区二区三区| 午夜精品一区二区三区三上悠亚|