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

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

?? vspi.v

?? verilog VSIP core,用verilog語言編寫
?? V
?? 第 1 頁 / 共 2 頁
字號:
reg     [7:0] shift_reg; wire    shift_clk; wire    shift_clk_negedge; //  negative edge of SCKwire    shift_negative_edge_nxt; reg     shift_negative_edge; wire    shift_datain; wire    shift_dataout; reg     slvsel_r1; reg     slvsel_r2; reg     slvsel_r3; //  synchronizerswire    spi_go; //  begin a transfer//  slave select registerreg     [7:0] ssel; //  status registerwire    [7:0] status; //  TX has completed, TX_RUN will go lowwire    tx_end; reg     tx_run; //  tx is runningwire    tx_start; // -------------------------------------------------------------reg     tx_start_r1; // ---------ARCHITECTURE rtl-----------//  required for synopsys//  # bits in a byteassign mosio = mosie_lcl == 1'b 1 & open_drain == 1'b 0 ? shift_dataout : 	1'b 0; //  drive low when open drain enabled.assign mosie = open_drain == 1'b 0 ? mosie_lcl : 	mosie_lcl == 1'b 1 & shift_dataout == 1'b 0 ? 1'b 1 : 	1'b 0; assign misoo = misoe_lcl == 1'b 1 & open_drain == 1'b 0 ? shift_dataout : 	1'b 0; //  drive low when open drain enabled.assign misoe = open_drain == 1'b 0 ? misoe_lcl : 	misoe_lcl == 1'b 1 & shift_dataout == 1'b 0 ? 1'b 1 : 	1'b 0; assign misoe_lcl = master_mode == 1'b 0 & slvsel == 1'b 1 ? 1'b 1 : 	1'b 0; //  spi_go initiates a transfer - A write to the DOUT reg in master//  mode ignore the CPU write if we're already running.assign mosie_lcl = master_mode == 1'b 1 ? 1'b 1 : 	1'b 0; assign spi_go = chip_sel == 1'b 1 & write == 1'b 1 & 	addr == 2'b 00 & tx_run == 1'b 0 & 	slvsel_r3 == 1'b 0 ? 1'b 1 : 	1'b 0; // -----------Shift register----------------always @(posedge clk)   begin : sr_proc   if (rst == 1'b 1)      begin      shift_reg <= 8'b 00000000;	//  sync reset      end   else      begin      if (spi_go == 1'b 1)//  don't reload while running         begin         shift_reg <= datain;	//  load with data from CPU         end      else if (shift_clk == 1'b 1 )         begin         shift_reg <= {shift_reg[6:0], shift_datain};	         end      end   end// --------Hold time register--------------always @(posedge clk)//  negative edge pipeline DFF   begin : neg_proc   if (rst == 1'b 1)      begin      shift_negative_edge <= 1'b 0;	//  sync reset      end   else if (shift_clk_negedge == 1'b 1 )      begin      shift_negative_edge <= shift_negative_edge_nxt;	      end   else if (spi_go == 1'b 1 )      begin      shift_negative_edge <= datain[7];	//  preload for phase=0 mode      end   endassign shift_negative_edge_nxt = phase == 1'b 1 ? shift_reg[7] : 	master_mode == 1'b 1 ? misoi : 	mosii; //  add in the negative edge dff on phase=1assign shift_dataout = phase == 1'b 1 ? shift_negative_edge : 	shift_reg[7]; //  insert the neg DFF in phase=0assign shift_datain = phase == 1'b 0 ? shift_negative_edge : 	master_mode == 1'b 1 ? misoi : 	mosii; // -------------TX run------------------//  this bit is active while a transmit is runningalways @(posedge clk)   begin : tr_proc   if (rst == 1'b 1)      begin      tx_run <= 1'b 0;	//  sync reset      end   else      begin      if (tx_start == 1'b 1)         begin         tx_run <= 1'b 1;	         end      else if (tx_end == 1'b 1 )         begin         tx_run <= 1'b 0;	         end      end   end// -----------Bit counter for master mode----------------always @(posedge clk)   begin : bc_proc   if (rst == 1'b 1)//  sync reset      begin      bit_ctr <= 3'b 000;	      end   else      begin      if (tx_start == 1'b 1)         begin         bit_ctr <= ssel[7:5];	         end      else if (shift_clk == 1'b 1 )         begin         bit_ctr <= bit_ctr - 1'b 1;	         end      end   end//  bit counterassign tx_end = master_mode == 1'b 1 & bit_ctr == 3'b 001 & 	shift_clk == 1'b 1 & tx_run == 1'b 1 ? 1'b 1 : 	1'b 0; assign tx_start = master_mode == 1'b 1 & spi_go == 1'b 1 ? 1'b 1 : 	1'b 0; // -------Control Register----------------------always @(posedge clk)   begin : gjr_proc   if (rst == 1'b 1)//  sync reset      begin      ctl_reg <= 8'b 00000000;	      end   else      begin      if (chip_sel == 1'b 1 & write == 1'b 1 & 	addr == 2'b 01)//  load         begin         ctl_reg <= datain;	         end      end   end//  map the control register to more meaningfull namesassign master_mode = ctl_reg[1]; assign open_drain = ctl_reg[2]; assign polck = ctl_reg[3]; assign phase = ctl_reg[4]; assign sel_clk = ctl_reg[6:5]; // -------Slave Select Register-------------------------always @(posedge clk)   begin : s_proc   if (rst == 1'b 1)//  sync reset      begin      ssel <= 8'b 00000000;	      end   else      begin      if (chip_sel == 1'b 1 & write == 1'b 1 & 	addr == 2'b 11)//  load         begin         ssel <= datain;	         end      end   endassign slvselo = ssel[4:0]; //  drive the portassign slvsele = master_mode; // -------Collision flag bit---------------------------always @(posedge clk)   begin : cf_proc   if (rst == 1'b 1)      begin      col_flag <= 1'b 0;	      end   else      begin      if (master_mode == 1'b 1 & slvsel_r3 == 1'b 1)         begin         col_flag <= 1'b 1;	         end      else if (chip_sel == 1'b 1 & write == 1'b 1 & 	addr == 2'b 10 & datain[5] == 1'b 1 )         begin         col_flag <= 1'b 0;	         end      end   end// -------OFLOw flag bit------------------------------always @(posedge clk)   begin : o_proc   if (rst == 1'b 1)      begin      oflow <= 1'b 0;	      end   else      begin      if (chip_sel == 1'b 1 & write == 1'b 1 & 	addr == 2'b 00 & (tx_run == 1'b 1 | 	slvsel_r3 == 1'b 1))//  write to DOUT//  and we're busy         begin         oflow <= 1'b 1;	         end      else if (chip_sel == 1'b 1 & write == 1'b 1 & 	addr == 2'b 10 & datain[6] == 1'b 1 )         begin         oflow <= 1'b 0;	         end      end   end// -------IRQ flag bit------------------------------always @(posedge clk)   begin : elr_proc   if (rst == 1'b 1)      begin      irq_flag <= 1'b 0;	      end   else      begin      if (tx_end == 1'b 1 | slvsel_r2 == 1'b 0 & 	slvsel_r3 == 1'b 1)         begin         irq_flag <= 1'b 1;	         end      else if (chip_sel == 1'b 1 & write == 1'b 1 & 	addr == 2'b 10 & datain[7] == 1'b 1 )         begin         irq_flag <= 1'b 0;	         end      end   endassign irq = irq_flag & ctl_reg[7]; //  gate with the IRQENB bit.// --------------various pipeline flops---------always @(posedge clk)   begin : flops_proc   slvsel_r3 <= slvsel_r2;	   slvsel_r2 <= slvsel_r1;	//  synchronizers   slvsel_r1 <= slvsel;	   sck_r3 <= sck_r2;	   sck_r2 <= sck_r1;	//  synchronizers//  select the desired polarity of the slave clk   sck_r1 <= ~scki ^ polck;	   tx_start_r1 <= tx_start;	   end// --------------clock divider for clk generation-------//  create a 2x clock which creates 2 pulses.//  One for each edge of SCK.always @(posedge clk)   begin : dvd_proc   if (~(tx_run == 1'b 1 & master_mode == 1'b 1) | 	tx_end == 1'b 1)//  divider only runs when sending data      begin      dvd_ctr <= 5'b 00000;	      dvd2 <= 1'b 0;	      end   else      begin      if (dvd_ctr == 5'b 00000)         begin         if (sel_clk == 2'b 00)            begin            dvd_ctr <= 5'b 00011;	            end         else if (sel_clk == 2'b 01 )            begin            dvd_ctr <= 5'b 00111;	            end         else if (sel_clk == 2'b 10 )            begin            dvd_ctr <= 5'b 01111;	            end         else            begin            dvd_ctr <= 5'b 11111;	            end         if (tx_start_r1 == 1'b 0)            begin            dvd2 <= ~dvd2;	            end         end      else         begin         dvd_ctr <= dvd_ctr - 1'b 1;	         end      end   end//  dvdassign dvd_zero = dvd_ctr == 5'b 00000 ? 1'b 1 : 	1'b 0; //  TX_START_R1 prevents data from shifting on the first//  clock in POLCK=1 mode which we don't want.We only get//  7 clocks otherwise.assign shift_clk = master_mode == 1'b 1 ? dvd_zero & dvd2 & tx_run & 	~tx_start_r1 : 	sck_r2 & ~sck_r3; //  dataout multiplexor for register readback//  assemble the bits that make up the status registerassign shift_clk_negedge = master_mode == 1'b 1 ? dvd_zero & ~dvd2 & tx_run : 	~sck_r2 & sck_r3; assign status = {irq_flag, oflow, col_flag, 3'b 000, 	tx_run, slvsel_r3}; assign scke = master_mode; assign scko = dvd2 ^ polck; assign dataout = addr == 2'b 00 ? shift_reg : 	addr == 2'b 01 ? ctl_reg : 	addr == 2'b 10 ? status : 	addr == 2'b 11 ? ssel : 	8'b xxxxxxxx; endmodule // module vspi

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久中文字幕| 精品国产第一区二区三区观看体验| 欧美成人女星排名| 日韩二区三区在线观看| 7777精品伊人久久久大香线蕉完整版| 亚洲欧洲国产日本综合| 99精品热视频| 亚洲欧美一区二区三区国产精品| 国产成人丝袜美腿| 国产精品青草久久| 91小视频免费观看| 亚洲一二三区不卡| 91麻豆精品国产91久久久| 亚洲国产精品久久人人爱蜜臀| 色av一区二区| 青青草91视频| 中文av一区二区| 欧美午夜精品免费| 国产综合久久久久久久久久久久| 国产免费成人在线视频| 91福利在线导航| 黄色日韩三级电影| 国产精品久久夜| 91色综合久久久久婷婷| 国产精品久久久久永久免费观看 | 亚洲综合久久久| 欧美日韩中文一区| 国产91在线看| 一区二区成人在线视频| 欧美成人精品二区三区99精品| 国产精品系列在线播放| 亚洲成人自拍网| 日本一区二区免费在线观看视频| 日本乱人伦一区| 精品一区二区影视| 一区二区三区丝袜| 久久免费偷拍视频| 欧美日韩免费电影| 成人免费视频一区| 久久国产精品72免费观看| 亚洲欧美偷拍卡通变态| 久久这里只有精品6| 欧美精品色综合| 欧美日韩在线一区二区| 91免费国产在线观看| 成人av电影在线观看| 国产精品一区三区| 免费成人av在线| 蜜臀av亚洲一区中文字幕| 亚洲人精品午夜| 国产精品久久毛片| 中文字幕精品综合| 国产偷国产偷精品高清尤物| 日韩女优视频免费观看| 91精品国产高清一区二区三区 | 一本久久综合亚洲鲁鲁五月天 | 久久久久久日产精品| 欧美电影在线免费观看| 日韩一区二区在线看片| 欧美一区欧美二区| 欧美精品一区二区三区在线播放| 日韩欧美成人激情| 国产白丝网站精品污在线入口| 国产精品你懂的| 亚洲成人黄色小说| 男人的j进女人的j一区| 国产精品888| 欧美色涩在线第一页| 欧美一区二区三区爱爱| 国产色产综合色产在线视频| 一区二区三区欧美视频| 精品一区二区免费| 91丨porny丨最新| 亚洲精品在线网站| 亚洲成人午夜影院| 国产成人免费视频精品含羞草妖精| 成人av手机在线观看| 91精品欧美综合在线观看最新| 欧美三级蜜桃2在线观看| 久久久国产精华| 视频一区二区中文字幕| 91精品福利视频| 中日韩av电影| 国产精品一区专区| 精品久久久久久久久久久久久久久久久| 最近日韩中文字幕| 国产宾馆实践打屁股91| 久久伊人蜜桃av一区二区| 免费精品视频在线| 91精品国产一区二区三区香蕉| 一区二区三区免费观看| av福利精品导航| 亚洲欧洲美洲综合色网| 成人av先锋影音| 亚洲精品视频免费观看| 日本道色综合久久| 亚洲欧美另类久久久精品2019| 97久久超碰精品国产| 国产精品久久久久影院| 成人激情黄色小说| 亚洲欧洲精品一区二区三区| av成人动漫在线观看| 成人免费在线播放视频| 日本精品一区二区三区高清| 亚洲国产精品久久不卡毛片| 欧美日韩国产一级片| 五月天亚洲婷婷| 日韩一区二区三区三四区视频在线观看| 香蕉乱码成人久久天堂爱免费| 91国产成人在线| 伦理电影国产精品| 国产亚洲精品免费| 91免费国产在线| 青青草成人在线观看| 久久久久久久久久久久久女国产乱 | 欧美色视频在线| 国产在线精品一区二区三区不卡 | 欧美成人video| 国产在线精品一区在线观看麻豆| 久久久美女毛片| 91丨九色丨黑人外教| 亚洲国产欧美另类丝袜| 久久免费电影网| 日本91福利区| 久久久亚洲精品一区二区三区| 秋霞电影网一区二区| 国产女同性恋一区二区| 欧美精品久久99久久在免费线| 国产精品自拍毛片| 视频精品一区二区| 国产精品国产三级国产aⅴ原创| 日韩午夜激情av| 欧美日韩你懂得| 91视频91自| av在线这里只有精品| 国产精品一区二区三区网站| 日日骚欧美日韩| 亚洲国产成人va在线观看天堂| 日本一区二区三区国色天香 | 亚洲一本大道在线| 自拍偷自拍亚洲精品播放| 国产欧美一二三区| 久久久美女艺术照精彩视频福利播放| 欧美精品精品一区| 欧美久久一区二区| 色综合婷婷久久| 色综合色狠狠综合色| 在线视频欧美区| 精品视频999| 制服丝袜成人动漫| 欧美不卡一区二区三区四区| 日韩一区二区视频| 2023国产精品| 亚洲精品免费一二三区| 香蕉乱码成人久久天堂爱免费| 婷婷国产在线综合| 激情图片小说一区| 成人av在线一区二区| 日本精品一级二级| 欧美一级淫片007| 国产天堂亚洲国产碰碰| 亚洲女厕所小便bbb| 日本少妇一区二区| 国产高清不卡二三区| 欧美午夜免费电影| 久久精品视频一区二区| 亚洲一区二区三区四区五区中文| 日日夜夜免费精品| av在线不卡免费看| 欧美一级午夜免费电影| 国产欧美一区视频| 蜜桃免费网站一区二区三区| 国产激情视频一区二区三区欧美| 91成人网在线| 国产精品免费av| 美女视频一区在线观看| 91小宝寻花一区二区三区| 日韩欧美激情四射| 亚洲成人在线免费| 日本精品视频一区二区三区| 国产欧美一区二区在线观看| 五月激情丁香一区二区三区| av电影在线观看一区| 精品久久久久久久久久久久久久久 | 欧美四级电影网| 亚洲精品乱码久久久久久| 国产成人av一区二区| 精品国产第一区二区三区观看体验| 午夜精品免费在线观看| 91美女片黄在线观看| 亚洲视频一二区| 一本色道久久综合亚洲精品按摩| 日本一区二区三区四区在线视频| 久久99国产精品麻豆| 26uuu国产在线精品一区二区| 久久精品国产在热久久| 欧美一级在线视频| 久久99国产精品麻豆| 久久午夜电影网| 色哟哟亚洲精品|