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

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

?? asmi.v

?? verilog 代碼
?? V
字號:
//Legal Notice: (C)2005 Altera Corporation. All rights reserved.  Your
//use of Altera Corporation's design tools, logic functions and other
//software and tools, and its AMPP partner logic functions, and any
//output files any of the foregoing (including device programming or
//simulation files), and any associated documentation or information are
//expressly subject to the terms and conditions of the Altera Program
//License Subscription Agreement or other applicable license agreement,
//including, without limitation, that your use is for the sole purpose
//of programming logic devices manufactured by Altera and sold by Altera
//or its authorized distributors.  Please refer to the applicable
//agreement for further details.

// synthesis translate_off
`timescale 1ns / 100ps
// synthesis translate_on
//Register map:
//addr      register      type
//0         read data     r
//1         write data    w
//2         status        r/w
//3         control       r/w
//4         reserved
//5         slave-enable  r/w
//6         end-of-packet-value r/w
//INPUT_CLOCK: 50000000
//ISMASTER: 1
//DATABITS: 8
//TARGETCLOCK: 20000000
//NUMSLAVES: 1
//CPOL: 0
//CPHA: 0
//LSBFIRST: 0
//EXTRADELAY: 1
//TARGETSSDELAY: 0.0001

module asmi_sub (
                  // inputs:
                   MISO,
                   asmi_select,
                   clk,
                   data_from_cpu,
                   mem_addr,
                   read_n,
                   reset_n,
                   write_n,

                  // outputs:
                   MOSI,
                   SCLK,
                   SS_n,
                   data_to_cpu,
                   dataavailable,
                   endofpacket,
                   irq,
                   readyfordata
                );

  output           MOSI;
  output           SCLK;
  output           SS_n;
  output  [ 15: 0] data_to_cpu;
  output           dataavailable;
  output           endofpacket;
  output           irq;
  output           readyfordata;
  input            MISO;
  input            asmi_select;
  input            clk;
  input   [ 15: 0] data_from_cpu;
  input   [  2: 0] mem_addr;
  input            read_n;
  input            reset_n;
  input            write_n;

  wire             E;
  reg              EOP;
  reg              MISO_reg;
  wire             MOSI;
  reg              ROE;
  reg              RRDY;
  wire             SCLK;
  reg              SCLK_reg;
  reg              SSO_reg;
  wire             SS_n;
  wire             TMT;
  reg              TOE;
  wire             TRDY;
  wire    [ 10: 0] asmi_control;
  reg     [ 15: 0] asmi_slave_select_holding_reg;
  reg     [ 15: 0] asmi_slave_select_reg;
  wire    [ 10: 0] asmi_status;
  wire             control_wr_strobe;
  reg              data_rd_strobe;
  reg     [ 15: 0] data_to_cpu;
  reg              data_wr_strobe;
  wire             dataavailable;
  reg     [ 11: 0] delayCounter;
  wire             enableSS;
  wire             endofpacket;
  reg     [ 15: 0] endofpacketvalue_reg;
  wire             endofpacketvalue_wr_strobe;
  reg              iEOP_reg;
  reg              iE_reg;
  reg              iROE_reg;
  reg              iRRDY_reg;
  reg              iTMT_reg;
  reg              iTOE_reg;
  reg              iTRDY_reg;
  wire             irq;
  reg              irq_reg;
  wire             p1_data_rd_strobe;
  wire    [ 15: 0] p1_data_to_cpu;
  wire             p1_data_wr_strobe;
  wire             p1_rd_strobe;
  wire    [  1: 0] p1_slowcount;
  wire             p1_wr_strobe;
  reg              rd_strobe;
  wire             readyfordata;
  reg     [  7: 0] rx_holding_reg;
  reg     [  7: 0] shift_reg;
  wire             slaveselect_wr_strobe;
  wire             slowclock;
  reg     [  1: 0] slowcount;
  reg     [  4: 0] state;
  wire             status_wr_strobe;
  reg              transmitting;
  reg              tx_holding_primed;
  reg     [  7: 0] tx_holding_reg;
  reg              wr_strobe;
  wire             write_shift_reg;
  wire             write_tx_holding;
  //asmi_control_port, which is an e_avalon_slave
  assign p1_rd_strobe = ~rd_strobe & asmi_select & ~read_n;
  // Read is a two-cycle event.
  always @(posedge clk or negedge reset_n)
    begin
      if (reset_n == 0)
          rd_strobe <= 0;
      else if (1)
          rd_strobe <= p1_rd_strobe;
    end


  assign p1_data_rd_strobe = p1_rd_strobe & (mem_addr == 0);
  always @(posedge clk or negedge reset_n)
    begin
      if (reset_n == 0)
          data_rd_strobe <= 0;
      else if (1)
          data_rd_strobe <= p1_data_rd_strobe;
    end


  assign p1_wr_strobe = ~wr_strobe & asmi_select & ~write_n;
  // Write is a two-cycle event.
  always @(posedge clk or negedge reset_n)
    begin
      if (reset_n == 0)
          wr_strobe <= 0;
      else if (1)
          wr_strobe <= p1_wr_strobe;
    end


  assign p1_data_wr_strobe = p1_wr_strobe & (mem_addr == 1);
  always @(posedge clk or negedge reset_n)
    begin
      if (reset_n == 0)
          data_wr_strobe <= 0;
      else if (1)
          data_wr_strobe <= p1_data_wr_strobe;
    end


  assign control_wr_strobe = wr_strobe & (mem_addr == 3);
  assign status_wr_strobe = wr_strobe & (mem_addr == 2);
  assign slaveselect_wr_strobe = wr_strobe & (mem_addr == 5);
  assign endofpacketvalue_wr_strobe = wr_strobe & (mem_addr == 6);
  assign TMT = ~transmitting & ~tx_holding_primed;
  assign E = ROE | TOE;
  assign asmi_status = {EOP, E, RRDY, TRDY, TMT, TOE, ROE, 3'b0};
  // Streaming data ready for pickup.
  assign dataavailable = RRDY;

  // Ready to accept streaming data.
  assign readyfordata = TRDY;

  // Endofpacket condition detected.
  assign endofpacket = EOP;

  always @(posedge clk or negedge reset_n)
    begin
      if (reset_n == 0)
        begin
          iEOP_reg <= 0;
          iE_reg <= 0;
          iRRDY_reg <= 0;
          iTRDY_reg <= 0;
          iTMT_reg <= 0;
          iTOE_reg <= 0;
          iROE_reg <= 0;
          SSO_reg <= 0;
        end
      else if (control_wr_strobe)
        begin
          iEOP_reg <= data_from_cpu[9];
          iE_reg <= data_from_cpu[8];
          iRRDY_reg <= data_from_cpu[7];
          iTRDY_reg <= data_from_cpu[6];
          iTMT_reg <= data_from_cpu[5];
          iTOE_reg <= data_from_cpu[4];
          iROE_reg <= data_from_cpu[3];
          SSO_reg <= data_from_cpu[10];
        end
    end


  assign asmi_control = {SSO_reg, iEOP_reg, iE_reg, iRRDY_reg, iTRDY_reg, 1'b0, iTOE_reg, iROE_reg, 3'b0};
  // IRQ output.
  always @(posedge clk or negedge reset_n)
    begin
      if (reset_n == 0)
          irq_reg <= 0;
      else if (1)
          irq_reg <= (EOP & iEOP_reg) | ((TOE | ROE) & iE_reg) | (RRDY & iRRDY_reg) | (TRDY & iTRDY_reg) | (TOE & iTOE_reg) | (ROE & iROE_reg);
    end


  assign irq = irq_reg;
  // Slave select register.
  always @(posedge clk or negedge reset_n)
    begin
      if (reset_n == 0)
          asmi_slave_select_reg <= 1;
      else if (write_shift_reg || control_wr_strobe & data_from_cpu[10] & ~SSO_reg)
          asmi_slave_select_reg <= asmi_slave_select_holding_reg;
    end


  // Slave select holding register.
  always @(posedge clk or negedge reset_n)
    begin
      if (reset_n == 0)
          asmi_slave_select_holding_reg <= 1;
      else if (slaveselect_wr_strobe)
          asmi_slave_select_holding_reg <= data_from_cpu;
    end


  // slowclock is active once every 2 system clock pulses.
  assign slowclock = slowcount == 2'h1;

  assign p1_slowcount = ({2 {(transmitting && !slowclock)}} & (slowcount + 1)) |
    ({2 {(~((transmitting && !slowclock)))}} & 0);

  // Divide counter for SPI clock.
  always @(posedge clk or negedge reset_n)
    begin
      if (reset_n == 0)
          slowcount <= 0;
      else if (1)
          slowcount <= p1_slowcount;
    end


  // End-of-packet value register.
  always @(posedge clk or negedge reset_n)
    begin
      if (reset_n == 0)
          endofpacketvalue_reg <= 0;
      else if (endofpacketvalue_wr_strobe)
          endofpacketvalue_reg <= data_from_cpu;
    end


  assign p1_data_to_cpu = ((mem_addr == 2))? asmi_status :
    ((mem_addr == 3))? asmi_control :
    ((mem_addr == 6))? endofpacketvalue_reg :
    ((mem_addr == 5))? asmi_slave_select_reg :
    rx_holding_reg;

  always @(posedge clk or negedge reset_n)
    begin
      if (reset_n == 0)
          data_to_cpu <= 0;
      else 
        // Data to cpu.
        data_to_cpu <= p1_data_to_cpu;

    end


  // Extra-delay counter.
  always @(posedge clk or negedge reset_n)
    begin
      if (reset_n == 0)
          delayCounter <= 2499;
      else 
        begin
          if (write_shift_reg)
              delayCounter <= 2499;
          if (transmitting & slowclock & (delayCounter != 0))
              delayCounter <= delayCounter - 1;
        end
    end


  // 'state' counts from 0 to 17.
  always @(posedge clk or negedge reset_n)
    begin
      if (reset_n == 0)
          state <= 0;
      else if (transmitting & slowclock & (delayCounter == 0))
          if (state == 17)
              state <= 0;
          else 
            state <= state + 1;
    end


  assign enableSS = transmitting & (delayCounter != 2499);
  assign MOSI = shift_reg[7];
  assign SS_n = (enableSS | SSO_reg) ? ~asmi_slave_select_reg : {1 {1'b1} };
  assign SCLK = SCLK_reg;
  // As long as there's an empty spot somewhere,
  //it's safe to write data.
  assign TRDY = ~(transmitting & tx_holding_primed);

  // Enable write to tx_holding_register.
  assign write_tx_holding = data_wr_strobe & TRDY;

  // Enable write to shift register.
  assign write_shift_reg = tx_holding_primed & ~transmitting;

  always @(posedge clk or negedge reset_n)
    begin
      if (reset_n == 0)
        begin
          shift_reg <= 0;
          rx_holding_reg <= 0;
          EOP <= 0;
          RRDY <= 0;
          ROE <= 0;
          TOE <= 0;
          tx_holding_reg <= 0;
          tx_holding_primed <= 0;
          transmitting <= 0;
          SCLK_reg <= 0;
          MISO_reg <= 0;
        end
      else 
        begin
          if (write_tx_holding)
            begin
              tx_holding_reg <= data_from_cpu;
              tx_holding_primed <= 1;
            end
          if (data_wr_strobe & ~TRDY)
              // You wrote when I wasn't ready.
              TOE <= 1;

          // EOP must be updated by the last (2nd) cycle of access.
          if ((p1_data_rd_strobe && (rx_holding_reg == endofpacketvalue_reg)) || (p1_data_wr_strobe && (data_from_cpu[7 : 0] == endofpacketvalue_reg)))
              EOP <= 1;
          if (write_shift_reg)
            begin
              shift_reg <= tx_holding_reg;
              transmitting <= 1;
            end
          if (write_shift_reg & ~write_tx_holding)
              // Clear tx_holding_primed
              tx_holding_primed <= 0;

          if (data_rd_strobe)
              // On data read, clear the RRDY bit.
              RRDY <= 0;

          if (status_wr_strobe)
            begin
              // On status write, clear all status bits (ignore the data).
              EOP <= 0;

              RRDY <= 0;
              ROE <= 0;
              TOE <= 0;
            end
          if (slowclock && (delayCounter == 0))
            begin
              if (state == 17)
                begin
                  transmitting <= 0;
                  RRDY <= 1;
                  rx_holding_reg <= shift_reg;
                  SCLK_reg <= 0;
                  if (RRDY)
                      ROE <= 1;
                end
              else if (state != 0)
                  if (transmitting)
                      SCLK_reg <= ~SCLK_reg;
              if (SCLK_reg ^ 0 ^ 0)
                begin
                  if (1)
                      shift_reg <= {shift_reg[6 : 0], MISO_reg};
                end
              else 
                MISO_reg <= MISO;
            end
        end
    end




endmodule


module tornado_asmi_atom (
                           // inputs:
                            dclkin,
                            oe,
                            scein,
                            sdoin,

                           // outputs:
                            data0out
                         );

  output           data0out;
  input            dclkin;
  input            oe;
  input            scein;
  input            sdoin;

  wire             data0out;

//synthesis translate_off
//////////////// SIMULATION-ONLY CONTENTS
  assign data0out = sdoin | scein | dclkin | oe;

//////////////// END SIMULATION-ONLY CONTENTS

//synthesis translate_on
//synthesis read_comments_as_HDL on
//  tornado_spiblock the_tornado_spiblock
//    (
//      .data0out (data0out),
//      .dclkin (dclkin),
//      .oe (oe),
//      .scein (scein),
//      .sdoin (sdoin)
//    );
//
//
//synthesis read_comments_as_HDL off


endmodule


module asmi (
              // inputs:
               asmi_select,
               clk,
               data_from_cpu,
               mem_addr,
               read_n,
               reset_n,
               write_n,

              // outputs:
               data_to_cpu,
               dataavailable,
               endofpacket,
               irq,
               readyfordata
            );

  output  [ 15: 0] data_to_cpu;
  output           dataavailable;
  output           endofpacket;
  output           irq;
  output           readyfordata;
  input            asmi_select;
  input            clk;
  input   [ 15: 0] data_from_cpu;
  input   [  2: 0] mem_addr;
  input            read_n;
  input            reset_n;
  input            write_n;

  wire             MISO;
  wire             MOSI;
  wire             SCLK;
  wire             SS_n;
  wire    [ 15: 0] data_to_cpu;
  wire             dataavailable;
  wire             endofpacket;
  wire             irq;
  wire             readyfordata;
  asmi_sub the_asmi_sub
    (
      .MISO          (MISO),
      .MOSI          (MOSI),
      .SCLK          (SCLK),
      .SS_n          (SS_n),
      .asmi_select   (asmi_select),
      .clk           (clk),
      .data_from_cpu (data_from_cpu),
      .data_to_cpu   (data_to_cpu),
      .dataavailable (dataavailable),
      .endofpacket   (endofpacket),
      .irq           (irq),
      .mem_addr      (mem_addr),
      .read_n        (read_n),
      .readyfordata  (readyfordata),
      .reset_n       (reset_n),
      .write_n       (write_n)
    );

  //asmi_control_port, which is an e_avalon_slave
  tornado_asmi_atom the_tornado_asmi_atom
    (
      .data0out (MISO),
      .dclkin   (SCLK),
      .oe       (1'b0),
      .scein    (SS_n),
      .sdoin    (MOSI)
    );



endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精选免费视频| 成人国产在线观看| 日韩美女天天操| 热久久久久久久| 日韩一级免费观看| 日韩高清不卡一区| 91精品在线一区二区| 男女激情视频一区| 这里只有精品视频在线观看| 午夜精品一区二区三区电影天堂| 色乱码一区二区三区88| 一区二区三区**美女毛片| 日韩一区二区高清| 国产在线国偷精品产拍免费yy| 日韩视频在线永久播放| 国产高清成人在线| 亚洲欧美另类小说| 日韩午夜在线观看视频| 成人一区二区三区| 中文字幕一区视频| 欧美人与禽zozo性伦| 国产乱一区二区| 亚洲另类中文字| 日韩久久久久久| 91丨porny丨最新| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 国产三级精品三级在线专区| 成人激情动漫在线观看| 亚洲成a人片在线不卡一二三区| 精品一区二区在线视频| 国产日产欧美一区二区三区 | 懂色av中文字幕一区二区三区 | 国产精品久久久久永久免费观看 | 欧美电影在线免费观看| 成人免费观看视频| 日韩精品成人一区二区在线| 国产婷婷色一区二区三区在线| 一本大道久久a久久综合婷婷| 国产精品亚洲人在线观看| 亚洲美女淫视频| 国产精品午夜春色av| 日韩三级高清在线| 欧美三级电影一区| 粉嫩欧美一区二区三区高清影视| 日本在线不卡一区| 亚洲成人免费在线观看| 亚洲乱码国产乱码精品精98午夜| 久久丝袜美腿综合| 精品日本一线二线三线不卡| 欧美一区二区美女| 91精品国产综合久久久久久漫画| 欧美日韩亚洲高清一区二区| 欧洲一区在线电影| 欧美裸体一区二区三区| 欧美三级资源在线| 7777精品伊人久久久大香线蕉 | 欧美丰满少妇xxxxx高潮对白| 欧洲中文字幕精品| 日韩一区二区麻豆国产| 中文欧美字幕免费| 国产精品久久二区二区| 亚洲在线成人精品| 美女视频黄 久久| 成人黄色a**站在线观看| 色网站国产精品| 日韩欧美一级精品久久| 久久久久久久久久久电影| 国产精品拍天天在线| 亚洲激情六月丁香| 久久国产三级精品| 亚洲成人黄色影院| 国产精品伦理在线| 偷拍一区二区三区| 国产精品一区一区| 色综合久久综合网欧美综合网 | 国产精品你懂的| 亚洲妇女屁股眼交7| 国产成+人+日韩+欧美+亚洲| 99久久国产综合色|国产精品| 欧美日韩小视频| 亚洲人成网站色在线观看| 亚洲精品视频一区| 成人免费视频免费观看| 欧美日韩你懂的| 国产精品国产三级国产普通话蜜臀 | 欧美亚洲一区三区| 国产精品网站一区| 国产乱码精品一区二区三区忘忧草 | 日韩免费观看高清完整版在线观看| 亚洲精品国产一区二区精华液| 亚洲三级电影全部在线观看高清| 国产精品免费看片| 丁香网亚洲国际| 久久综合视频网| 国产主播一区二区三区| 欧美日本在线观看| 亚洲午夜精品一区二区三区他趣| 99riav久久精品riav| 欧美一二三四在线| 奇米888四色在线精品| 欧美视频中文字幕| 肉肉av福利一精品导航| 7777精品久久久大香线蕉| 亚洲电影一区二区| 日韩一区二区精品葵司在线| 亚洲成av人片在线观看| 91精品国产综合久久久久久漫画| 视频一区视频二区中文字幕| 91精品国产一区二区三区 | 亚洲一区二区三区影院| 欧美日韩一二区| 亚洲色图一区二区三区| 日本色综合中文字幕| 欧美日韩一区二区三区四区| 图片区小说区国产精品视频| 91 com成人网| 国产一区二区女| 亚洲精品成a人| 欧美高清一级片在线| 精久久久久久久久久久| 国产精品福利一区二区三区| 91在线你懂得| 日日摸夜夜添夜夜添精品视频 | 东方欧美亚洲色图在线| 亚洲色图清纯唯美| 日韩情涩欧美日韩视频| 国产成人午夜电影网| 亚洲一区二区三区在线| 久久久蜜桃精品| 久久久久久久久久久久电影 | 99久久伊人精品| 亚洲午夜视频在线观看| 国产女主播一区| 精品对白一区国产伦| 欧美日韩不卡一区二区| 91麻豆国产自产在线观看| 国产在线精品国自产拍免费| 夜夜爽夜夜爽精品视频| 亚洲图片你懂的| 国产精品毛片久久久久久| 日韩欧美国产三级| 欧美精三区欧美精三区| 在线观看日韩一区| 91首页免费视频| 在线观看国产一区二区| 国产91精品露脸国语对白| 青青草原综合久久大伊人精品优势| 亚洲欧美偷拍三级| |精品福利一区二区三区| 国产人妖乱国产精品人妖| www国产成人| 337p粉嫩大胆色噜噜噜噜亚洲| 91精品国产综合久久婷婷香蕉 | 国产高清亚洲一区| 91国偷自产一区二区三区成为亚洲经典 | 欧美性色欧美a在线播放| 日本韩国视频一区二区| 欧美三级电影一区| 日韩一级视频免费观看在线| 日韩一区二区影院| 久久久一区二区| 久久精品日韩一区二区三区| 国产欧美一区二区精品性| 日韩伦理av电影| 日韩精品一二区| 国产69精品久久久久毛片| 91在线播放网址| 欧美一级日韩一级| 国产欧美日韩三区| 依依成人精品视频| 国产精品午夜免费| 水蜜桃久久夜色精品一区的特点| 美女尤物国产一区| 国产成人av电影在线| 欧美日韩久久一区| 亚洲国产另类av| 欧美日本韩国一区二区三区视频 | 九九精品视频在线看| 在线观看国产日韩| 精品国产伦一区二区三区观看体验| 久久毛片高清国产| 一区二区三区高清在线| 一区二区三区视频在线观看 | 中文字幕一区二区三区不卡| 国产日韩精品视频一区| 午夜精品福利在线| 精品一区二区在线播放| 国产99久久久国产精品免费看| 99久久久久免费精品国产| 亚洲精品一区二区三区福利 | 日本不卡的三区四区五区| 美女网站色91| 欧美综合一区二区| 亚洲国产高清不卡| 久久99精品国产| 国产精品一区二区三区四区| 91毛片在线观看| 欧美一二三在线| 性感美女极品91精品| 欧美www视频|