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

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

?? risc16f84_clk2x.v

?? vga ipcore的verilog代碼
?? V
?? 第 1 頁 / 共 3 頁
字號:
wire addr_aux_adr_hi;
wire addr_aux_dat;
wire addr_sram;

     // Other output registers (for removing hazards)
reg  ram_we_reg;         // data-sram write strobe
reg  aux_we_reg;         // AUX write strobe

     // Synchronizers
reg  inte_sync_reg;

     // Signals used in "main_efsm" procedure
     // (Intermediate nodes used for resource sharing.)
wire [7:0] ram_i_node;   // result of reading RAM/Special registers
wire [12:0] inc_pc_node; // value of PC + 1
wire [7:0] mask_node;    // bit mask for logical operations
wire [8:0] add_node;     // result of 8bit addition
wire [4:0] addlow_node;  // result of low-4bit addition
wire temp;               // Placeholder wire
wire dtemp;              // Placeholder wire
wire aluout_zero_node;   // H if ALUOUT = 0
reg  [7:0] aluout;       // result of calculation

reg  writew_node;        // H if destination is W register
reg  writeram_node;      // H if destination is RAM/Special registers
reg  int_node;           // Used in Q4_PP to indicate interrupt condition

//--------------------------------------------------------------------------
// Instantiations
//--------------------------------------------------------------------------


//--------------------------------------------------------------------------
// Functions & Tasks
//--------------------------------------------------------------------------

//--------------------------------------------------------------------------
// Module code
//--------------------------------------------------------------------------

// CPU synchronizers
always @(posedge clk_i)
begin
  if (clk_en_i)  // Global clock enable
  begin
    inte_sync_reg   <= inte;
  end
end

// Decode OPcode    (see pp.54 of PIC16F84 data sheet)
// only 1 signal of the following signals will be '1'
assign inst_call     = (inst_reg[13:11] ==  3'b100           );
assign inst_goto     = (inst_reg[13:11] ==  3'b101           );
assign inst_bcf      = (inst_reg[13:10] ==  4'b0100          );
assign inst_bsf      = (inst_reg[13:10] ==  4'b0101          );
assign inst_btfsc    = (inst_reg[13:10] ==  4'b0110          );
assign inst_btfss    = (inst_reg[13:10] ==  4'b0111          );
assign inst_movlw    = (inst_reg[13:10] ==  4'b1100          );
assign inst_retlw    = (inst_reg[13:10] ==  4'b1101          );
assign inst_sublw    = (inst_reg[13:9]  ==  5'b11110         );
assign inst_addlw    = (inst_reg[13:9]  ==  5'b11111         );
assign inst_iorlw    = (inst_reg[13:8]  ==  6'b111000        );
assign inst_andlw    = (inst_reg[13:8]  ==  6'b111001        );
assign inst_xorlw    = (inst_reg[13:8]  ==  6'b111010        );
assign inst_subwf    = (inst_reg[13:8]  ==  6'b000010        );
assign inst_decf     = (inst_reg[13:8]  ==  6'b000011        );
assign inst_iorwf    = (inst_reg[13:8]  ==  6'b000100        );
assign inst_andwf    = (inst_reg[13:8]  ==  6'b000101        );
assign inst_xorwf    = (inst_reg[13:8]  ==  6'b000110        );
assign inst_addwf    = (inst_reg[13:8]  ==  6'b000111        );
assign inst_movf     = (inst_reg[13:8]  ==  6'b001000        );
assign inst_comf     = (inst_reg[13:8]  ==  6'b001001        );
assign inst_incf     = (inst_reg[13:8]  ==  6'b001010        );
assign inst_decfsz   = (inst_reg[13:8]  ==  6'b001011        );
assign inst_rrf      = (inst_reg[13:8]  ==  6'b001100        );
assign inst_rlf      = (inst_reg[13:8]  ==  6'b001101        );
assign inst_swapf    = (inst_reg[13:8]  ==  6'b001110        );
assign inst_incfsz   = (inst_reg[13:8]  ==  6'b001111        );
assign inst_movwf    = (inst_reg[13:7]  ==  7'b0000001       );
assign inst_clrw     = (inst_reg[13:7]  ==  7'b0000010       );
assign inst_clrf     = (inst_reg[13:7]  ==  7'b0000011       );
assign inst_ret      = (inst_reg[13:0]  == 14'b00000000001000);
assign inst_retfie   = (inst_reg[13:0]  == 14'b00000000001001);
assign inst_sleep    = (inst_reg[13:0]  == 14'b00000001100011);


// Calculate RAM access address (see pp.19 of PIC16F84 data sheet)

    // if "d"=0, indirect addressing is used, so RAM address is BANK+FSR
    // otherwise, RAM address is BANK+"d"
    // (see pp.19 of PIC16F84 data sheet)
assign ram_adr_node = (inst_reg[6:0]==0)?{status_reg[7],fsr_reg[7:0]}:
                               {status_reg[6:5],inst_reg[6:0]};

    // check if this is an access to external RAM or not
assign addr_sram   = (ram_adr_node[6:0] > 7'b0001011); //0CH-7FH,8CH-FFH

    // check if this is an access to special register or not
    // only 1 signal of the following signals will be '1'
assign addr_pcl     = (ram_adr_node[6:0] ==  7'b0000010); // 02H, 82H
assign addr_stat    = (ram_adr_node[6:0] ==  7'b0000011); // 03H, 83H
assign addr_fsr     = (ram_adr_node[6:0] ==  7'b0000100); // 04H, 84H
assign addr_aux_dat = (ram_adr_node[7:0] == 8'b00001000); // 08H
assign addr_pclath  = (ram_adr_node[6:0] ==  7'b0001010); // 0AH, 8AH
assign addr_intcon  = (ram_adr_node[6:0] ==  7'b0001011); // 0BH, 8BH
assign addr_option  = (ram_adr_node[7:0] == 8'b10000001); // 81H
assign addr_aux_adr_lo = (ram_adr_node[7:0] == 8'b00000101); // 05H
assign addr_aux_adr_hi = (ram_adr_node[7:0] == 8'b00000110); // 06H

// construct bit-mask for logical operations and bit tests
assign mask_node = 1 << inst_reg[9:7];

// 1. Intermediate nodes for resource sharing

// 1-2. PC + 1
assign inc_pc_node = pc_reg + 1;

// Tri-state drivers instead of a huge selector...  It produces smaller
// results, and runs faster.
assign ram_i_node = (addr_sram)       ?ram_dat_i:8'bZ;
assign ram_i_node = (addr_pcl)        ?pc_reg[7:0]:8'bZ;
assign ram_i_node = (addr_stat)       ?status_reg:8'bZ;
assign ram_i_node = (addr_fsr)        ?fsr_reg:8'bZ;
assign ram_i_node = (addr_aux_dat)    ?aux_dat_io:8'bZ;
assign ram_i_node = (addr_pclath)     ?{3'b0,pclath_reg}:8'bZ;
assign ram_i_node = (addr_intcon)     ?intcon_reg:8'bZ;
assign ram_i_node = (addr_option)     ?option_reg:8'bZ;
assign ram_i_node = (addr_aux_adr_lo) ?aux_adr_lo_reg:8'bZ;
assign ram_i_node = (addr_aux_adr_hi) ?aux_adr_hi_reg:8'bZ;

// 1-3. Adder (ALU)
// full 8bit-addition, with carry in/out.
assign {add_node,temp}     =    {1'b0,aluinp1_reg,1'b1} 
                              + {1'b0,aluinp2_reg,c_in};
// lower 4bit-addition
assign {addlow_node,dtemp} =    {1'b0,aluinp1_reg[3:0],1'b1} 
                              + {1'b0,aluinp2_reg[3:0],c_in};

// 1-4. Test if aluout = 0
assign aluout_zero_node = (aluout == 0)?1:0;

// 1-5. Determine destination
always @(
            intstart_reg
         or inst_reg
         or inst_movwf
         or inst_bcf
         or inst_bsf
         or inst_clrf
         or inst_movlw
         or inst_addlw
         or inst_sublw
         or inst_andlw
         or inst_iorlw
         or inst_xorlw
         or inst_retlw
         or inst_clrw
         or inst_movf
         or inst_swapf
         or inst_addwf
         or inst_subwf
         or inst_andwf
         or inst_iorwf
         or inst_xorwf
         or inst_decf
         or inst_incf
         or inst_rlf
         or inst_rrf
         or inst_decfsz
         or inst_incfsz
         or inst_comf
         )
begin
  if (intstart_reg)
  begin
    writew_node     <= 0;
    writeram_node   <= 0;
  end
  else if (inst_movwf || inst_bcf || inst_bsf || inst_clrf)
  begin
    writew_node     <= 0;
    writeram_node   <= 1;
  end
  else if (   inst_movlw || inst_addlw || inst_sublw || inst_andlw 
           || inst_iorlw || inst_xorlw || inst_retlw || inst_clrw)
  begin
    writew_node     <= 1;
    writeram_node   <= 0;
  end
  else if (   inst_movf   || inst_swapf || inst_addwf || inst_subwf
           || inst_andwf  || inst_iorwf || inst_xorwf || inst_decf 
           || inst_incf   || inst_rlf   || inst_rrf   || inst_decfsz 
           || inst_incfsz || inst_comf)
  begin
    writew_node     <= ~inst_reg[7];  // ("d" field of fetched instruction)
    writeram_node   <=  inst_reg[7];  // ("d" field of fetched instruction)
  end
  else
  begin
    writew_node     <= 0;
    writeram_node   <= 0;
  end
end // End of determine destination logic


// 2-4-1. Calculation and store result into alu-output register

always @(
            add_node
         or aluinp1_reg
         or aluinp2_reg
         or status_reg
         or inst_reg
         or inst_movwf
         or inst_bcf
         or inst_bsf
         or inst_btfsc
         or inst_btfss
         or inst_clrf
         or inst_movlw
         or inst_addlw
         or inst_sublw
         or inst_andlw
         or inst_iorlw
         or inst_xorlw
         or inst_retlw
         or inst_clrw
         or inst_movf
         or inst_swapf
         or inst_addwf
         or inst_subwf
         or inst_andwf
         or inst_iorwf
         or inst_xorwf
         or inst_decf
         or inst_incf
         or inst_rlf
         or inst_rrf
         or inst_decfsz
         or inst_incfsz
         or inst_comf
         )
begin
  // 2-4-1-1. Set aluout register
          // Rotate left
  if      (inst_rlf) 
          aluout <= {aluinp1_reg[6:0],status_reg[0]};
          // Rotate right
  else if (inst_rrf) 
          aluout  <= {status_reg[0],aluinp1_reg[7:1]};
          // Swap nibbles
  else if (inst_swapf)
          aluout <= {aluinp1_reg[3:0],aluinp1_reg[7:4]};
          // Logical inversion
  else if (inst_comf)
          aluout  <= ~aluinp1_reg;
          // Logical AND, bit clear/bit test
  else if (   inst_andlw || inst_andwf || inst_bcf || inst_btfsc
           || inst_btfss) 
          aluout  <= (aluinp1_reg & aluinp2_reg);
          // Logical OR, bit set
  else if (inst_bsf || inst_iorlw || inst_iorwf)
          aluout  <= (aluinp1_reg | aluinp2_reg);
          // Logical XOR
  else if (inst_xorlw || inst_xorwf)
          aluout  <= (aluinp1_reg ^ aluinp2_reg);
          // Addition, Subtraction, Increment, Decrement
  else if (  inst_addlw || inst_addwf  || inst_sublw || inst_subwf
           || inst_decf || inst_decfsz || inst_incf  || inst_incfsz)
          aluout  <= add_node[7:0];
          // Pass through
  else aluout  <= aluinp1_reg;
end


// MAIN EFSM: description of register value changes in each clock cycle
always @(posedge clk_i)
begin
if (clk_en_i)
begin

  // 2. EFSM body
  case (state_reg)

    // 2-1. Reset state (see pp.14 and pp.42 of PIC16F84 data sheet)
    QRESET_PP :
    begin
      pc_reg          <= 0;     // 0
      status_reg[7:5] <= 3'b0;
      pclath_reg      <= 0;     // 0
      intcon_reg[7:1] <= 7'b0;
      option_reg      <= -1;    // Set to all ones, like vhdl (others => 1)
      aux_adr_lo_reg  <= 0;
      aux_adr_hi_reg  <= 0;
      exec_op_reg     <= 0;
      intclr_reg      <= 1;     // clear int
      intstart_reg    <= 0;
      ram_we_reg      <= 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩国产精品大片| 成人欧美一区二区三区| 色播五月激情综合网| 国产iv一区二区三区| 国产精品一区久久久久| 狠狠狠色丁香婷婷综合激情 | 久久91精品国产91久久小草| 亚洲成a人片综合在线| 夜夜精品视频一区二区| 一区二区三区电影在线播| 亚洲丝袜精品丝袜在线| 一区二区三区国产精华| 亚洲成人av电影| 日本va欧美va瓶| 精品写真视频在线观看| 国产高清精品久久久久| 国产福利一区二区三区视频在线| 国产精品亚洲一区二区三区在线| 激情五月激情综合网| 国产成人亚洲精品青草天美 | 国产成人精品三级| 成人性生交大片免费看视频在线| 成人激情校园春色| 欧美日韩卡一卡二| 精品国产电影一区二区| 国产精品国产三级国产有无不卡 | 欧美一区二区三区电影| 2022国产精品视频| 亚洲视频一区二区免费在线观看| 一区二区三区四区亚洲| 免费不卡在线视频| 成人免费高清视频在线观看| 欧美优质美女网站| 26uuu欧美| 一区二区三区四区蜜桃| 极品少妇一区二区三区精品视频| 成人av电影观看| 8x福利精品第一导航| 久久久99精品免费观看| 亚洲综合成人在线视频| 国产精品资源站在线| 色综合久久88色综合天天免费| 91精品蜜臀在线一区尤物| 中文字幕av不卡| 日韩不卡在线观看日韩不卡视频| 国产91精品精华液一区二区三区| 欧美喷潮久久久xxxxx| 中文字幕的久久| 免费看欧美美女黄的网站| 91香蕉国产在线观看软件| 精品国产91亚洲一区二区三区婷婷| 综合久久久久久| 国产福利一区二区三区| 91精品国产免费| 亚洲精品免费视频| 国产精品1区2区| 51精品国自产在线| 一区二区三区中文在线| 成人综合婷婷国产精品久久蜜臀| 91精品国产色综合久久不卡蜜臀| 亚洲色图制服丝袜| 成人网页在线观看| 国产午夜一区二区三区| 日韩成人一级片| 4hu四虎永久在线影院成人| 亚洲精品国产视频| 91小宝寻花一区二区三区| 欧美国产日韩亚洲一区| 韩国女主播一区二区三区| 91精品国产一区二区三区| 五月开心婷婷久久| 欧美视频一区在线| 亚洲综合图片区| 色999日韩国产欧美一区二区| 国产精品卡一卡二| 波多野结衣在线一区| 久久久国产精品不卡| 韩国精品免费视频| 精品国产sm最大网站| 国内精品国产成人国产三级粉色| 91精品免费在线| 国内成+人亚洲+欧美+综合在线| 91精品国产综合久久精品app| 日韩精品色哟哟| 日韩一区二区三| 黄色精品一二区| 中文字幕欧美国产| 91碰在线视频| 午夜婷婷国产麻豆精品| 欧美精品视频www在线观看| 日韩电影在线观看网站| 精品久久久久久久人人人人传媒| 精彩视频一区二区| 国产欧美日韩另类一区| 成人免费视频视频| 一区二区三区日韩| 91精品国产高清一区二区三区 | 国产精品久久久久影院亚瑟 | 亚洲一区二区三区三| 欧美另类高清zo欧美| 精品一区二区日韩| 国产精品女上位| 欧美亚洲一区三区| 精东粉嫩av免费一区二区三区| 久久人人97超碰com| 91色婷婷久久久久合中文| 青青草精品视频| 国产精品久久久久久久岛一牛影视 | 欧美日韩免费不卡视频一区二区三区| 视频在线观看91| 日本一区二区三区视频视频| av在线不卡网| 日本大胆欧美人术艺术动态| 国产婷婷一区二区| 在线电影院国产精品| 韩日精品视频一区| 亚洲aaa精品| 国产精品久久久久影院色老大| 欧美精品xxxxbbbb| 成人高清视频免费观看| 青青草91视频| 亚洲伦在线观看| 国产亚洲一区二区在线观看| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 欧美日韩久久久一区| 国产一区二区三区视频在线播放| 亚洲一二三四区| 国产女同互慰高潮91漫画| 欧美一区二区三区视频在线 | 日韩欧美国产精品| 色爱区综合激月婷婷| 岛国av在线一区| 老司机午夜精品| 亚洲第一av色| 一区二区三区四区不卡在线 | 亚洲国产另类精品专区| 国产精品毛片久久久久久久| 精品噜噜噜噜久久久久久久久试看 | 亚洲精品第一国产综合野| 亚洲精品一区二区三区蜜桃下载 | 精品亚洲免费视频| 亚洲成人av一区二区三区| 亚洲特级片在线| 亚洲欧美日韩成人高清在线一区| 久久久亚洲午夜电影| 日韩欧美国产综合在线一区二区三区| 91福利国产精品| 91国偷自产一区二区三区观看| 成人国产精品免费网站| av中文字幕在线不卡| 不卡视频一二三| 成人久久18免费网站麻豆| 国产99久久久国产精品免费看| 国产精品中文字幕一区二区三区| 精品午夜久久福利影院| 久久国产精品区| 国产在线一区二区| 国产精品中文有码| 丁香一区二区三区| www.视频一区| 日本韩国欧美国产| 欧美日韩久久久| 日韩欧美一区二区三区在线| 日韩欧美国产1| 国产日产欧美一区二区三区 | 欧美日韩精品电影| 欧美群妇大交群的观看方式| 在线不卡欧美精品一区二区三区| 91麻豆精品国产91久久久久| 精品嫩草影院久久| 国产精品丝袜久久久久久app| 国产精品系列在线| 一区二区三区在线影院| 天天综合色天天综合| 久久99精品国产.久久久久| 国产精品18久久久久久vr| 9i在线看片成人免费| 欧美视频一区二区在线观看| 日韩午夜在线影院| 国产日产精品一区| 亚洲综合一区二区| 久久 天天综合| 91免费看`日韩一区二区| 欧美日韩激情一区| 久久先锋影音av鲁色资源| 中文字幕一区不卡| 日韩av一区二区三区四区| 国产一区二区福利| 欧美影院一区二区三区| 2020国产精品自拍| 一区二区激情小说| 精品一区二区三区香蕉蜜桃| 99国产精品久久久久| 91精品国产色综合久久不卡电影 | 国产精品久久久爽爽爽麻豆色哟哟| 一区二区三区在线播放| 久久精品国产77777蜜臀| 色婷婷综合中文久久一本| 日韩精品资源二区在线| 亚洲午夜精品一区二区三区他趣|