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

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

?? smartcard.v

?? 自己設計的Smartcard功能模塊
?? V
?? 第 1 頁 / 共 3 頁
字號:
//******************************************************************
//   (C) COPYRIGHT  2007  Southeast University ASIC Center
//    ALL RIGHTS RESERVED
//    File     : SmartCard.v
//    Author   : Jun Yi 
//    Data     : 2007-9-20
//    Version  : 1.0
//    Abstract : State Machine of the whole system:RESET STATE ,CHARACTER TRANSFER, BLOCK TRANSFER
//*******************************************************************

module Smartcard(
                 clk_div,
                 rst_preset_n_a,
                                 
                 //input output signal at the IO line                            
                 serial_in,
                 serial_out,
                 Reset,
                 direction,
                                                         
                 //control signal
                 indicate,                               
                 TS,
                 StateOfCard,
                 ColdEnable,
                 WarmEnable,
                 T,
                                 
                                 //for ETU time  set signal  
                 F,
                 D,
                                 //for character overtime and guardtime
                 in_N,
                 WI,                       
                                         
                 //for block overtime and guardtime
                 in_BWI,
                 in_CWI,
                 in_BGT,

                                 //block length :means how many bytes in a block
                 in_BlockLength,
                 
                                 //to from receiver_FIFO
                 in_rFIFOFull,
                         out_rxDataToFIFO_r,
                 out_ReceiverWe,
                                 
                                 
                                 // to or from transmitter_FIFO
                 in_txDataFromTxFIFO,
                 in_TransmitFIFOEmpty, 
                         out_TransmitRead_r,        //the transmit shift register ask to read the data from the txFIFO

                                 //overtime signals     to set the status register in the APB_IF 
                 out_BWT_OvertimeIndicate_r,  //BWT
                 out_CWT_OvertimeIndicate_r,  //CWT
                 out_ATR_overtimeIndicator_r,
                 out_ATR_exceed9600ETUIndicator_r,
                 out_character_OvertimeIndicate_r,
                                 //parityError signal
                 out_ParityErrorIndicator_r,

                                 //FIFO error signals sent to APB_IF
                 out_TransmitterEmptyIndictor,                 
                 out_OverrunErrorIndicator_r,
                                 
                                 //input signal  from APB_IF to reset the overtime counters
                 in_readStatusRegister
                );

input clk_div;
input rst_preset_n_a;
input [1:0] indicate;   //01 read  ;  10 write;  00  idle;
input ColdEnable;
input WarmEnable;
input StateOfCard;
input T;
input  [7:0] WI;
input [15:0] F;
input [3:0]  D;
input [7:0] in_N;
input TS;
input [7:0] in_BlockLength;
input [3:0] in_BWI;
input [3:0] in_CWI;
input [7:0] in_BGT;
input [7:0] in_txDataFromTxFIFO;
input in_rFIFOFull;

input serial_in;
output serial_out;
output direction;
output Reset;
output out_ReceiverWe;
input in_TransmitFIFOEmpty;
output out_TransmitterEmptyIndictor;
output out_TransmitRead_r;     //the transmit shift register ask to read the data from the txFIFO
output [7:0] out_rxDataToFIFO_r;
input in_readStatusRegister;
output out_OverrunErrorIndicator_r;
output out_BWT_OvertimeIndicate_r;
output out_CWT_OvertimeIndicate_r;
output out_ATR_overtimeIndicator_r;
output out_ATR_exceed9600ETUIndicator_r;
output out_ParityErrorIndicator_r;
output out_character_OvertimeIndicate_r; 


parameter  DEFAULT_ETU =    5'b1010 ;
//parameter  COUNT4      =    22'b1101100111110111111111 ;
parameter  COUNT4      =    3'b101;

reg [5:0] current_state;

reg serial_out;
reg direction;
reg Reset;


///////////////overtime indicate register
reg out_ATR_overtimeIndicator_r;
reg out_ATR_exceed9600ETUIndicator_r;
reg out_BWT_OvertimeIndicate_r;
reg out_CWT_OvertimeIndicate_r;
reg out_ParityErrorIndicator_r;
reg out_character_OvertimeIndicate_r;
/////////////////////////////////////////

//counter
reg [17:0] COUNT;
reg [8:0] count1;          //400 clk
//reg [8:0] count11;          //400 clk
reg [15:0] count2;
//reg [8:0] count3;          //372 used in state receiver ATR Attention!!!
reg [4:0] count3;
reg [21:0] count4;         //9600ETU
reg [17:0] count5;         //character_receiver_ETU
reg [1:0] count10;
reg [2:0] rbit_counter_r;   //8 bit data
reg [2:0] bit_counter_r;   //8 bit transfer data
reg [4:0] character_number;
reg [20:0] character_transfer_overtime_r;  //960*F*WI
reg [24:0] count6;
reg [13:0] BWT_counter;
reg [13:0] count7;
reg [5:0] CWT_counter;
reg [5:0] count8;
reg [7:0] BlockLength;
reg [7:0] N;
reg [3:0] BWI;
reg [3:0] CWI;
reg [7:0] BGT;

//////////////////////////////////////////////////
reg rparity_xor_r;
reg parity_xor_r; //used in character transmitted
reg rparity_r;
reg [7:0] rshift_r;   //a shift register
reg rf_push_r;        //a signal of push data to fifo
reg [6:0]shift_out_r;
reg  bit_out_r;
reg rf_push_q_r;
reg [7:0] out_rxDataToFIFO_r;
reg  out_TransmitRead_r;
reg out_TransmitterEmptyIndictor;
reg out_OverrunErrorIndicator_r;
reg B_C_sent;




///////////////////////////////////////////////////

wire count3_eq_halfcount3;
wire count3_eq_0;
//wire  [8:0] count3_minus_1;

wire count5_eq_halfcount5;
wire count5_eq_0;
//wire [17:0] count5_minus_1;

wire out_ReceiverWe;       //ask for write data to rx_FIFO

assign  count3_eq_halfcount3 = (count3 == (DEFAULT_ETU >>1));
assign  count3_eq_0 = (count3 == 9'b0);
//assign  count3_minus_1 = count3 - 1'b1;

assign  count5_eq_halfcount5 = (count5 == (COUNT>>1));
assign  count5_eq_0 = (count5 == 18'b0);
//assign  count5_minus_1 = count5 - 1'b1;

always @ (D or F)
  begin
    case(D)
    4'b0001:COUNT = F;
    4'b0010:COUNT = F>>1;
    4'b0011:COUNT = F>>2;
    4'b0100:COUNT = F>>3;
    4'b0101:COUNT = F>>4;
    4'b0110:COUNT = F>>5;   
    4'b1010:COUNT = F<<1;
    4'b1011:COUNT = F<<2;
    4'b1100:COUNT = F<<3;
    4'b1101:COUNT = F<<4;
    4'b1110:COUNT = F<<5;
    4'b1111:COUNT = F<<6;
    default: COUNT = F;
    endcase
  end

//CALCULATE BWT  
always @ (BWI)//960*2^BWI *etu
  begin
    case(BWI)
      4'b0000:BWT_counter = 14'b00001111000000;
      4'b0001:BWT_counter = 14'b00011110000000;
      4'b0010:BWT_counter = 14'b00111100000000;
      4'b0011:BWT_counter = 14'b01111000000000;
      4'b0100:BWT_counter = 14'b11110000000000;  
      default :  BWT_counter = 14'b11110000000000;
    endcase
  end

//CALCULATE CWT 
always @ (CWI)
  begin
    case(CWI)
      4'b0000:CWT_counter =6'b000001;
      4'b0001:CWT_counter =6'b000010;
      4'b0010:CWT_counter =6'b000100;
      4'b0011:CWT_counter =6'b001000;
      4'b0100:CWT_counter =6'b010000;
      4'b0101:CWT_counter =6'b100000;
      default:CWT_counter =6'b000001;
    endcase
  end

always @ (D or WI)      //character_transfer_overtime_r = 960 * D * WI  etu
  begin
        case(D)
        4'b0001:character_transfer_overtime_r = (10'b1111000000 * WI);
        4'b0010:character_transfer_overtime_r = (11'b11110000000 * WI);
        4'b0011:character_transfer_overtime_r = (12'b111100000000 * WI);
        4'b0100:character_transfer_overtime_r = (13'b1111000000000 * WI);
        4'b0101:character_transfer_overtime_r = (14'b11110000000000 * WI);
        4'b0110:character_transfer_overtime_r = (15'b111100000000000 * WI);   
        4'b1010:character_transfer_overtime_r = (9'b111100000 * WI);
        4'b1011:character_transfer_overtime_r = (8'b11110000 * WI);
        4'b1100:character_transfer_overtime_r = (7'b1111000 * WI);
        4'b1101:character_transfer_overtime_r = (6'b111100 * WI);
        4'b1110:character_transfer_overtime_r = (5'b11110 * WI);
        4'b1111:character_transfer_overtime_r = (4'b1111 * WI);
    default: character_transfer_overtime_r = 14'b10010110000000;
    endcase
  end  


     
    
always @(posedge clk_div or negedge rst_preset_n_a )
  begin
    if (!rst_preset_n_a )
      begin    
          ////////Indicator_r/////////////////////
          out_ATR_overtimeIndicator_r <=1'b0;
          out_ATR_exceed9600ETUIndicator_r <=1'b0;
          out_BWT_OvertimeIndicate_r <=1'b0;
          out_CWT_OvertimeIndicate_r <=1'b0;
          out_ParityErrorIndicator_r <=1'b0;
          out_character_OvertimeIndicate_r <=1'b0;   
                   
          ///////count/////////////////   
          count1 <= 9'b110001111;    //400
          //count11 <= 9'b110001111; 
          count2 <= 16'b1001110000111111;        //40000 clk
          count3 <= DEFAULT_ETU - 1'b1;         //372 -1  used in ATR
          count4 <= COUNT4;      //9600 ETU
          count5 <= 18'b0;          
          count6 <=21'b0 ;
          count7 <= 14'b0;
          count8 <= 6'b0;
		  count10 <= 2'b0;
          rbit_counter_r <= 3'b111;
          bit_counter_r <= 3'b111; 
          //////////////////////////////
          direction <= 1'b1;
          serial_out <= 1'b1;
          Reset <= 1'b1;          
          B_C_sent <= 1'b0;
          rshift_r <= 8'b0;
          rf_push_r <= 1'b0;
          out_rxDataToFIFO_r <= 8'b0;        
          rparity_xor_r <=  1'b0;
          rparity_r <=  1'b0; 
          shift_out_r <= 7'b0;
          bit_out_r  <= 1'b0;
          parity_xor_r <= 1'b0;
          out_TransmitRead_r<= 1'b0;  
          N <= 8'b0;
          BWI <= 4'b0100;
          CWI <= 4'b0001;
          BGT <= 8'b10110;
          BlockLength <= 8'b1;
		  current_state <= `IDLE;
		  character_number <= 'h0;
      end 
    else
      begin
      case(current_state)
      `IDLE:
        begin
          ////////Indicator_r/////////////////////
          out_ATR_overtimeIndicator_r <=1'b0;
          out_ATR_exceed9600ETUIndicator_r <=1'b0;
          out_BWT_OvertimeIndicate_r <=1'b0;
          out_CWT_OvertimeIndicate_r <=1'b0;
          out_ParityErrorIndicator_r <=1'b0;
          out_character_OvertimeIndicate_r <=1'b0;   
                   
          ///////count/////////////////   
          count1 <= 9'b110001111;    //400
          //count11 <= 9'b110001111;
          count2 <= 16'b1001110000111111;        //40000 clk
          count3 <= DEFAULT_ETU -1'b1;         //372 -1  used in ATR
          count4 <= COUNT4;      //9600 ETU
          count5 <= COUNT -1'b1;          
          count6 <= character_transfer_overtime_r;
          count7 <= BWT_counter;
          count8 <= CWT_counter;
		  count10 <= 2'b11;
          rbit_counter_r <= 3'b111;
          bit_counter_r <= 3'b111; 
          direction <= 1'b1;
          Reset <= 1'b1;          
          B_C_sent <= 1'b0;
          rshift_r <= 8'b0;
          rf_push_r <= 1'b0;
          out_rxDataToFIFO_r <= 8'b0;
		  serial_out <= 1'b1;

          N <= in_N;
          BWI <= in_BWI;
          CWI <= in_CWI;
          BGT <= in_BGT;
          BlockLength <= in_BlockLength;
        //////////////////////////////////////////
          if (StateOfCard == 1'b1)
            begin
              if (WarmEnable || ColdEnable)
                  current_state <= `RESET_SET0;
			  else	
                if (indicate == 2'b00)
                  current_state <= `IDLE;
              else
                if ((indicate == 2'b01)&&(T ==1'b0))
                  current_state <= `CHARACTER_RECEIVER_WAIT_START;
              else
                if ((indicate == 2'b10)&&(T ==1'b0))
                  current_state <= `CHARACTER_TRANSMITTER_PREPARE;
              else
                if ((indicate == 2'b01)&&(T ==1'b1))
                  current_state <= `BLOCK_RECEIVER_GET_CWT_BWT;
              else 
                if ((indicate == 2'b10)&&(T ==1'b1))
                  current_state <= `BLOCK_TRANSMITTER_PREPARE;
            end   //end  if (StateOfCard == 1'b1)
           
           character_number <= 5'b11111 ; //32 WORD at most
         
       end   //end IDLE  

      `RESET_SET0:   
        begin     
          if (count1 == 3'h0)  //400 clk
            begin
              Reset <= 1'b1;
              serial_out <= 1'b1;
              direction <= 1'b0;              
//            current_state <= `RESET_HOLD;
              current_state <= `RESET_WAIT_ATR;
              count1 <= 9'b110001111;
            end   
          else                     
            begin
              Reset <= 1'b0;
              serial_out <= 1'b1; 
              direction <= 1'b0;
              current_state <= `RESET_SET0;        
            end           
          count1 <= count1 - 1'b1;
        end
/*          
      `RESET_HOLD:     
        begin
          if (count11 == 3'h0)  //400 clk 
            begin
              Reset <= 1'b1;
              serial_out <= 1'b1;   //I/O line can't set value to input
              count11 <= 9'b110001111;
              direction <= 1'b1;             
              current_state <= `RESET_WAIT_ATR;
            end  
    
          else   
            begin
              Reset <= 1'b1;
              serial_out <= 1'b1; 
              direction <= 1'b0;              
              current_state <= `RESET_HOLD;  
              count11 <= count11 - 1'b1;                    
            end                
        end
*/                
      `RESET_WAIT_ATR: 
        begin
          if (count2 == 4'h0)
            begin
              out_ATR_overtimeIndicator_r <= 1'b1;          //overtime register,check whether the card can provide any response
              if(in_readStatusRegister)
                begin
                  out_ATR_overtimeIndicator_r <= 1'b0;
                  current_state <= `IDLE; 
                end              
            end
          else
              begin

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国视频一区二区| 91精品婷婷国产综合久久竹菊| 成人免费视频视频在线观看免费| 不卡的av在线播放| 91.com视频| 欧美韩日一区二区三区四区| 亚洲高清不卡在线| 成人网在线免费视频| 91麻豆精品91久久久久久清纯| 国产欧美日韩亚州综合| 午夜视频一区二区三区| 成人一区二区三区| 日韩三级高清在线| 亚洲一区av在线| 成人h精品动漫一区二区三区| 欧美日韩不卡在线| 亚洲欧洲一区二区三区| 久久99久久久欧美国产| 欧美性受极品xxxx喷水| 亚洲国产高清不卡| 久久99精品国产91久久来源| 欧美视频一区二区三区在线观看| 欧美国产国产综合| 国产精品影视网| 日韩欧美激情四射| 日韩福利电影在线| 精品视频在线看| 亚洲精品国产品国语在线app| 国产91高潮流白浆在线麻豆| 精品毛片乱码1区2区3区| 亚洲成人777| 欧美人成免费网站| 亚洲一区二区三区中文字幕| 色综合视频一区二区三区高清| 中文一区二区在线观看| 粉嫩aⅴ一区二区三区四区| 欧美tickling网站挠脚心| 日韩成人免费电影| 91精品中文字幕一区二区三区| 亚洲最大成人网4388xx| 在线观看欧美黄色| 亚洲尤物在线视频观看| 欧美三级在线播放| 日韩黄色小视频| 日韩视频免费直播| 国内国产精品久久| 国产欧美日韩在线观看| 99久久婷婷国产| 一区二区三区自拍| 欧美视频中文字幕| 蜜臀精品一区二区三区在线观看| 91精品国产高清一区二区三区蜜臀| 视频一区视频二区在线观看| 91精品国产欧美一区二区| 日本午夜一本久久久综合| 欧美白人最猛性xxxxx69交| 激情国产一区二区| 国产精品系列在线| 欧美aaaaaa午夜精品| 成人免费毛片a| 久久久不卡影院| 福利一区在线观看| 亚洲免费在线视频| 91黄色在线观看| 免费精品99久久国产综合精品| 欧美r级在线观看| aaa欧美日韩| 午夜精品影院在线观看| 欧美成人女星排行榜| 成人一区二区三区视频| 亚洲国产另类精品专区| 精品人伦一区二区色婷婷| 成人一级片网址| 首页亚洲欧美制服丝腿| 国产三级欧美三级日产三级99| 色哟哟在线观看一区二区三区| 日韩高清一区在线| 国产精品免费av| 91麻豆精品国产91久久久久久久久| 国产+成+人+亚洲欧洲自线| 亚洲综合偷拍欧美一区色| 精品国产一区二区三区久久影院| 99久久久国产精品免费蜜臀| 麻豆精品蜜桃视频网站| 亚洲精品视频在线| 精品日本一线二线三线不卡| 色先锋aa成人| 国产精品一区二区果冻传媒| 亚洲成av人片观看| 国产精品久久久久久亚洲毛片 | 首页欧美精品中文字幕| 久久精品欧美一区二区三区麻豆| 欧美专区日韩专区| 成人午夜免费电影| 免费视频最近日韩| 亚洲国产成人porn| 中文字幕亚洲精品在线观看| 欧美tickling网站挠脚心| 欧美日韩情趣电影| 99国产精品国产精品毛片| 国产乱码一区二区三区| 偷拍日韩校园综合在线| 亚洲日本一区二区三区| 国产女人18毛片水真多成人如厕 | 久久久久久久久久久久电影| 777午夜精品视频在线播放| 成人美女视频在线观看| 极品美女销魂一区二区三区免费| 亚洲大尺度视频在线观看| 亚洲人成网站色在线观看| 国产三级精品视频| 久久天堂av综合合色蜜桃网| 欧美精品粉嫩高潮一区二区| 一本色道久久综合狠狠躁的推荐 | 日韩在线观看一区二区| 亚洲激情一二三区| 综合激情网...| 亚洲欧美在线aaa| 国产精品久久久久毛片软件| 中文字幕av资源一区| 国产欧美一区二区三区在线看蜜臀 | 日韩一区二区麻豆国产| 欧美麻豆精品久久久久久| 欧美视频你懂的| 欧美视频一区二| 91精品蜜臀在线一区尤物| 欧美日韩三级视频| 在线综合亚洲欧美在线视频| 91麻豆精品国产91久久久资源速度 | 午夜欧美大尺度福利影院在线看| 一区二区三区四区亚洲| 亚洲黄网站在线观看| 亚洲国产一区二区在线播放| 亚洲综合色自拍一区| 五月综合激情网| 青草av.久久免费一区| 久久se精品一区二区| 国产一区二区毛片| 成人a区在线观看| 色噜噜夜夜夜综合网| 欧美日韩国产一区| 日韩欧美电影在线| 国产色产综合色产在线视频| 国产精品美女久久福利网站| 亚洲视频中文字幕| 性感美女极品91精品| 蜜臀99久久精品久久久久久软件| 久久er99精品| 97se亚洲国产综合自在线不卡| 欧美四级电影网| 欧美成人video| 1区2区3区欧美| 亚洲最大色网站| 国产一区二区三区四区在线观看| 成人午夜视频免费看| 欧美无乱码久久久免费午夜一区 | 国产精品免费视频网站| 亚洲综合精品久久| 九九视频精品免费| 91丝袜高跟美女视频| 欧美理论在线播放| 国产日韩精品视频一区| 亚洲最新视频在线播放| 狠狠色狠狠色综合日日91app| 不卡av在线网| 日韩一级成人av| 日韩毛片高清在线播放| 午夜不卡av在线| av亚洲精华国产精华精华| 777久久久精品| 亚洲欧美综合色| 韩国av一区二区三区在线观看| 91免费看片在线观看| 精品国产露脸精彩对白| 亚洲激情男女视频| 国产成人午夜电影网| 精品视频免费在线| 国产精品情趣视频| 久久不见久久见免费视频1| 色综合久久中文字幕综合网 | 日韩av电影天堂| 色综合 综合色| 国产视频一区二区在线观看| 丝袜美腿亚洲一区二区图片| 99久久国产综合色|国产精品| 日韩精品一区二区三区视频| 亚洲精品乱码久久久久久| 国产精品一区二区黑丝| 欧美tickle裸体挠脚心vk| 午夜精品久久久久久久蜜桃app | 国产农村妇女毛片精品久久麻豆| 爽爽淫人综合网网站 | 国产一区二区三区在线看麻豆| 欧美精品日日鲁夜夜添| 一区二区三区在线观看动漫 | 中文字幕电影一区| 国产高清精品久久久久| 日韩精品一区二区三区swag| 日本成人在线看| 欧美一级片免费看|