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

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

?? it51_core.v

?? 流片過的risc_8051源代碼 verilog語言描述的~
?? V
?? 第 1 頁 / 共 5 頁
字號:
//-----------------------------------------------------------------------------
//   IT51 (Improved-T51)                                                     --
//                                                                           --
//   VERSION: 030723                                                         --
//                                                                           --
//   Contact: yfchen58@gmail.com                                             --
//                                                                           --
//-----------------------------------------------------------------------------
//                                                                           --
//  IT51 - Improved T51 (VHDL 1-Cycle 8051 Compatible Microcontroller)       --
//  Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org)             --
//                          Yung-Fu Chen (yfchen58@ms49.hinet.net)           --
//                                                                           --
//-----------------------------------------------------------------------------
//  FETURE                                                                   --
//     . IT51_top interface is similar to synopsys DW8051                    --
//     . High-Performance 1-Cycle 8051                                       --
//     . instruction compatible with standard DW8051                         --
//     . 256 byte internal data memory                                       --
//     . up to 64KB external data memory                                     --
//     . up to 64KB internal program memory                                  --
//     . export sfr-bus                                                      --
//     . no dual-port memory used                                            --
//     . no watch-dog timer                                                  --
//     . dual DPTR (DPTR0, DPTR1), refer to DW8051                           --
//     . sleep mode support, refer to DW8051                                 --
//     . no stop mode                                                        --
//     . six external interrupt, refer to DW8051                             --
//     . pass all DW8051 test-pattern                                        --
//     . UART/Timer are not fully tested yet                                 --
//     . no internal tri-state bus                                           --
//     . 2-Cycle MUL Instruction                                             --
//                                                                           --
//-----------------------------------------------------------------------------
//                                                                           --
//  IT51_top (Interface Compatible with Synopsys DW8051)                     --
//     |                                                                     --
//     +-- IT51_core (Control Unit)                                          --
//     |       |                                                             --
//     |       +-- IT51_ALU (ALU)                                            --
//     |               |                                                     --
//     |               +-- IT51_MD (MUL/DIV)                                 --
//     |                                                                     --
//     +-- IT51_Glue (Glue Logic)                                            --
//     |                                                                     --
//     +-- IT51_TC01 (Timer/Counter-1)                                       --
//     |                                                                     --
//     +-- IT51_TC2 (Timer/Counter-2)                                        --
//     |                                                                     --
//     +-- IT51_UART (UART)                                                  --
//                                                                           --
//-----------------------------------------------------------------------------
// ============================================================================
// The original T51 license is listed below:
// ============================================================================
//
// 8051 compatible microcontroller core
//
// Version : 0218
//
// Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org)
//
// All rights reserved
//
// Redistribution and use in source and synthezised forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// Redistributions in synthesized form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// Neither the name of the author nor the names of other contributors may
// be used to endorse or promote products derived from this software without
// specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//
// Please report bugs to the author, but before you do so, please
// make sure that this is not a derivative work and that
// you have the latest version of this file.
//
// The latest version of this file can be found at:
//	http://www.opencores.org/cvsweb.shtml/t51/
//
// Limitations :
//
// File history :
//
// ============================================================================
//
//`define DPH0 DPTR0[15:8] 
//`define DPL0 DPTR0[7:0] 
//`define DPH1 DPTR1[15:8] 
//`define DPL1 DPTR1[7:0] 
//`define DPS_SEL DPS[0] 
//`define cInst_Length cInst_MCode[1:0] 
//`define nInst ROM_Data 
//`define nInst_Rn_Index ROM_Data[2:0] 

module IT51_core (Clk, Rst_n, Idle_n, ROM_Addr, ROM_Data, RAM_Addr, RAM_RData, RAM_WData, RAM_Cycle, RAM_Rd, RAM_Wr, iRAM_Addr, iRAM_Rd, iRAM_Wr, iRAM_RData, iRAM_WData, Int_Trig, Int_Acc, SFR_Rd, SFR_Wr, SFR_Addr, SFR_WData, SFR_RData_Ext);

   // included from package it51_pack
   input Clk; 
   input Rst_n; 
   input Idle_n; 
   output[15:0] ROM_Addr; 
   wire[15:0] ROM_Addr;
   input[7:0] ROM_Data; 
   output[15:0] RAM_Addr; 
   reg[15:0] RAM_Addr;
   input[7:0] RAM_RData; 
   output[7:0] RAM_WData; 
   wire[7:0] RAM_WData;
   output RAM_Cycle; 
   wire RAM_Cycle;
   output RAM_Rd; 
   wire RAM_Rd;
   output RAM_Wr; 
   wire RAM_Wr;
   output[7:0] iRAM_Addr; 
   wire[7:0] iRAM_Addr;
   output iRAM_Rd; 
   wire iRAM_Rd;
   output iRAM_Wr; 
   wire iRAM_Wr;
   input[7:0] iRAM_RData; 
   output[7:0] iRAM_WData; 
   wire[7:0] iRAM_WData;
   input[10:0] Int_Trig; 
   output[10:0] Int_Acc; 
   reg[10:0] Int_Acc;
   output SFR_Rd; 
   wire SFR_Rd;
   output SFR_Wr; 
   wire SFR_Wr;
   output[6:0] SFR_Addr; 
   wire[6:0] SFR_Addr;
   output[7:0] SFR_WData; 
   wire[7:0] SFR_WData;
   input[7:0] SFR_RData_Ext; 

   // Registers
   reg[7:0] ACC; 
   reg[7:0] B; 
   reg[7:1] PSW; // Bit 0 is parity
   wire PSW0; 
   reg[7:0] IP; 
   reg[7:0] SP; 
   reg[7:0] iSP; 
   reg[15:0] DPTR0; // DPTR0
   wire[15:0] DPTR0_Plus_ACC; 
   reg[15:0] DPTR1; // DPTR1
   wire[15:0] DPTR1_Plus_ACC; 
   reg[7:0] DPS; // DPS
   reg[7:0] CKCON; // CKCON
   reg[15:0] PC; 
   reg[15:0] PC_Plus_1; 
   reg[15:0] PC_Plus_2; 
   reg[15:0] PC_Minus_1; 
   reg[15:0] PC_Plus_cInst1; 
   reg[15:0] PC_Plus_cInst2; 
   reg[7:0] MPAGE; 
   reg[15:0] PCC; 
   reg[15:0] nPC; 
   reg[15:0] oPC; 
   // ALU signals
   wire[7:0] Op_A; 
   wire[7:0] Op_B; 
   reg[7:0] Mem_A; 
   reg Mem_A_Rd; 
   wire[7:0] Mem_Din; 
   reg[7:0] Old_Mem_A; 
   wire[7:0] ACC_Q; 
   wire[7:0] B_Q; 
   wire[7:0] Res_Bus; 
   wire[7:5] Status_D; 
   wire[7:5] Status_Wr; 
   // Misc signals
   reg[7:0] Int_AddrA; 
   reg[7:0] Int_AddrA_r; 
   wire Last; 
   reg[1:0] FCycle; 
   reg RET_r; 
   wire Next_PSW7; 
   wire Next_ACC_Z; 
   reg ACC_Wr; 
   reg B_Wr; 
   reg[7:0] SFR_RData; 
   reg[7:0] SFR_RData_r; 
   reg[7:0] Bit_Pattern; 
   // Registered instruction words.
   reg[7:0] cInst; 
   reg[7:0] cInst1; 
   reg[7:0] cInst2; 
   reg[8:0] cInst_MCode; 
   reg[8:0] nInst_MCode; 
   // Control signals
   reg RAM_Rd_i; 
   reg RAM_Wr_i; 
   reg Rst_r_n; 
   reg SFR_Rd_i; 
   reg SFR_Wr_i; 
   reg SFR_Wr_p; 
   reg Mem_Wr; 
   reg Mem_Wr_p; 
   reg J_Skip; 
   reg IPending; 
   reg[10:0] Int_Trig_r; 
   reg ICall; 
   reg HPInt; 
   reg LPInt; 
   reg[3:0] PCPaused; 
   wire Div_Rdy; 
   reg INC_DPTR; 
   wire CJNE; 
   wire DJNZ; 
   // Mux control
   reg AMux_SFR; 
   reg BMux_Inst2; 
   reg RMux_PCL; 
   reg RMux_PCH; 
   reg INT_reject; 
   wire First_Cycle; 
   wire Second_Cycle; 
   wire Third_Cycle; 
   wire Last_Cycle; 
   wire Inst_Skip; 
   wire IStart; 
   wire Ri_Stall; 
   wire PSW_Stall; 
   wire RW_Stall; 
   reg PCPause; 
   wire Ready; 
   reg NOP; 
   wire nInst_is_Ri; 
   wire nInst_is_Rn; 
   wire nInst_is_RET; 
   wire nInst_is_RETI; 
   wire nInst_is_DR; 
   reg cInst_is_DW; 
   reg cInst_is_MOVX_Write; 
   reg cInst_is_MOVX_Read; 
   reg cInst_is_RET; 
   reg cInst_is_RETI; 
   reg cInst_is_MOVC; 
   reg cInst_is_DIV; 
   reg cInst_is_PUSH; 
   reg cInst_is_POP; 
   reg cInst_is_ACALL; 
   reg cInst_is_LCALL; 
   reg cInst_is_Ri; 
   reg cInst_is_Rn; 
   reg cInst_is_A_Write; 
   reg cInst_is_MUL; 
   reg cInst_is_INC_DPTR; 
   reg cInst_is_JC; 
   reg cInst_is_JNC; 
   reg cInst_is_JZ; 
   reg cInst_is_JNZ; 
   reg cInst_is_SJMP; 
   reg cInst_is_AJMP; 
   reg cInst_is_JB; 
   reg cInst_is_JNB; 
   reg cInst_is_JBC; 
   reg cInst_is_LJMP; 
   reg cInst_is_IW; 
   reg cInst_is_DR; 
   reg cInst_is_CJNE; 
   reg cInst_is_DJNE; 
   reg cInst_is_DJNZ; 
   reg cInst_is_JMP_A_DPTR; 
   reg cInst_is_7x; 
   reg cInst_is_8x; 
   reg cInst_is_Ax; 
   reg cInst_is_x3; 
   reg cInst_is_x5; 
   reg[7:0] EIP; 
   wire[10:0] INT_IP; 
   reg[15:0] IRQ_Entry; 

   //--------------------------------------------------------------------------
   assign iRAM_Rd = Mem_A_Rd ;
   assign iRAM_Wr = Mem_Wr ;
   assign iRAM_WData = Mem_Din ;
   assign iRAM_Addr = (Mem_Wr == 1'b1) ? Int_AddrA_r : Int_AddrA ;

   always @(negedge Rst_n or posedge Clk)
   begin
      if (Rst_n == 1'b0)
      begin
         Mem_A <= {8{1'b0}} ; 
      end
      else
      begin
         if (Mem_A_Rd == 1'b1)
         begin
            Mem_A <= iRAM_RData ; 
         end 
         if (Mem_Wr == 1'b1)
         begin
            if (Int_AddrA_r == Int_AddrA)
            begin
               Mem_A <= Mem_Din ; 
            end 
         end 
      end 
   end 
   //--------------------------------------------------------------------------
   assign ROM_Addr = nPC ;
   //--------------------------------------------------------------------------
   // Ready
   assign Ready = (Idle_n == 1'b1) ;
   //--------------------------------------------------------------------------
   // Next Instruction is @Ri
   assign nInst_is_Ri = ((nInst_MCode[7]) == 1'b1) ;
   assign nInst_is_Rn = ((nInst_MCode[8]) == 1'b1) ;
   //assign nInst_is_RET = (nInst == 8'b00100010) ;
   assign nInst_is_RET = (ROM_Data == 8'b00100010) ;
   assign nInst_is_RETI = (ROM_Data == 8'b00110010) ;
   assign nInst_is_DR = ((nInst_MCode[5]) == 1'b1) ;

   //--------------------------------------------------------------------------
   // Program counter
   //PC_Plus_1      <= PC + 1;
   //PC_Plus_2      <= PC + 2;
   //PC_Minus_1     <= PC - 1;
   //PC_Plus_cInst1 <= std_logic_vector(conv_unsigned(signed(PC) +
   //                                                       signed(cInst1), 16));
   //PC_Plus_cInst2 <= std_logic_vector(conv_unsigned(signed(PC) +
   //                                                       signed(cInst2), 16));
   always @(negedge Rst_n or posedge Clk)
   begin
      if (Rst_n == 1'b0)
      begin
         PC <= {16{1'b0}} ; 
         PC_Plus_1 <= 16'b0000000000000001 ; 
         PC_Plus_2 <= 16'b0000000000000010 ; 
         PC_Minus_1 <= 16'b1111111111111111 ; 
      end
      else
      begin
         if (Ready)
         begin
            PC <= nPC ; 
            PC_Plus_1 <= nPC + 1 ; 
            PC_Plus_2 <= nPC + 2 ; 
            PC_Minus_1 <= nPC - 1 ; 
         end 
      end 
   end 

   // PC_Plus_cInst1
   always @(negedge Rst_n or posedge Clk)
   begin
      if (Rst_n == 1'b0)
      begin
         PC_Plus_cInst1 <= {16{1'b0}} ; 
      end
      else
      begin
         if (Ready)
         begin
            if (First_Cycle)
            begin
               //PC_Plus_cInst1 <= std_logic_vector(signed(nPC) + signed(nInst)) ; 
               PC_Plus_cInst1 <= nPC + ROM_Data ; 
            end
            else
            begin
               //PC_Plus_cInst1 <= std_logic_vector(signed(nPC) + signed(cInst1)) ; 
               PC_Plus_cInst1 <= nPC + cInst1 ; 
            end 
         end 
      end 
   end 

   // PC_Plus_cInst2
   always @(negedge Rst_n or posedge Clk)
   begin
      if (Rst_n == 1'b0)
      begin
         PC_Plus_cInst2 <= {16{1'b0}} ; 
      end
      else
      begin
         if (Ready)
         begin
            if (Second_Cycle)
            begin
               //PC_Plus_cInst2 <= std_logic_vector(signed(nPC) + signed(nInst)) ; 
               PC_Plus_cInst2 <= nPC + ROM_Data; 
            end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91精品久久久久久久网曝门| 久久亚洲捆绑美女| 国产精品夜夜嗨| 黑人巨大精品欧美一区| 美女网站视频久久| 久久爱www久久做| 激情国产一区二区| 欧美性猛片aaaaaaa做受| 欧美日韩一区二区电影| 欧美一区二区三区精品| 欧美videos中文字幕| 久久五月婷婷丁香社区| 亚欧色一区w666天堂| 久久69国产一区二区蜜臀| 国产一区二区三区美女| 成人av午夜影院| 欧美亚洲一区二区在线观看| 国产日本欧美一区二区| 亚洲精品伦理在线| 日本在线不卡一区| 国产高清久久久久| 欧美日免费三级在线| 国产精品国产三级国产普通话三级 | 久久久久久久久久久电影| 国产精品久久久久一区二区三区| 日韩高清一级片| 欧美另类高清zo欧美| 久久久久国产精品麻豆| 激情文学综合插| 精品少妇一区二区| 狠狠色丁香久久婷婷综| 日韩精品一区二区三区视频在线观看 | 欧美日韩三级一区| 中文字幕一区二区三区乱码在线| 亚洲国产sm捆绑调教视频 | 欧美精品自拍偷拍| 亚洲午夜一二三区视频| 91蝌蚪国产九色| 宅男噜噜噜66一区二区66| 国产欧美一区二区三区在线老狼| 国产一区二区三区四区在线观看 | 国产午夜精品一区二区三区视频 | 3d动漫精品啪啪1区2区免费| 亚洲成人tv网| 日韩欧美一二区| 国产精品一区免费视频| 国产精品久久久久精k8| 在线欧美日韩精品| 欧美国产综合色视频| 麻豆91精品视频| 久久午夜电影网| 99精品久久只有精品| 久久精品视频免费观看| 成人av动漫在线| 亚洲午夜在线电影| 精品人在线二区三区| 成人h精品动漫一区二区三区| 亚洲欧美自拍偷拍色图| 精品视频123区在线观看| 久久精品国产秦先生| 337p粉嫩大胆噜噜噜噜噜91av| 国产黄色成人av| 亚洲国产三级在线| 久久老女人爱爱| 欧洲精品在线观看| 国模少妇一区二区三区| 一色屋精品亚洲香蕉网站| 欧美一级免费大片| 亚洲人精品一区| 97国产精品videossex| 日韩黄色免费电影| 制服丝袜av成人在线看| 国产精品99久久久久久宅男| 一个色在线综合| 欧美美女网站色| 国产电影一区在线| 天天色图综合网| 欧美成人一级视频| 日本丰满少妇一区二区三区| 亚洲免费毛片网站| 精品日韩欧美在线| 欧美色老头old∨ideo| 国产不卡视频在线播放| 欧美bbbbb| 国产无一区二区| 日韩一级片在线观看| 色婷婷一区二区三区四区| 亚洲黄色在线视频| 国产午夜精品一区二区三区四区| 91麻豆精品国产综合久久久久久| 成人av网址在线观看| 精品一区二区在线观看| 首页国产欧美日韩丝袜| 一区二区三区鲁丝不卡| 中文字幕中文字幕在线一区 | 在线不卡a资源高清| 99视频一区二区| 亚洲一卡二卡三卡四卡无卡久久 | 日韩成人精品在线观看| 中文字幕一区不卡| 久久精品人人做人人综合| 日韩精品中文字幕一区二区三区 | 91久久奴性调教| 成人av在线影院| 99精品视频在线观看免费| 成人精品一区二区三区四区 | 激情偷乱视频一区二区三区| 婷婷综合五月天| 亚洲高清视频的网址| 一区二区三区小说| 综合精品久久久| 精品久久一二三区| 91精品国产aⅴ一区二区| 欧美日韩成人在线| 成人国产免费视频| 高清不卡一二三区| aaa亚洲精品一二三区| 99免费精品在线观看| 99久久久精品免费观看国产蜜| 99久久婷婷国产综合精品 | 日韩区在线观看| 日韩精品一区二区三区视频播放 | 日韩电影在线观看一区| 午夜久久久影院| 日韩精品视频网站| 久久国产精品72免费观看| 狠狠久久亚洲欧美| 成人精品国产免费网站| 9人人澡人人爽人人精品| 91视频国产资源| 在线视频亚洲一区| 在线免费观看日本欧美| 91精品国产综合久久婷婷香蕉| 欧美成人a∨高清免费观看| 精品va天堂亚洲国产| 欧美麻豆精品久久久久久| 欧美电影免费观看高清完整版| 久久免费看少妇高潮| 亚洲欧美经典视频| 日本强好片久久久久久aaa| 国产一区二区三区久久久| av资源网一区| 欧美高清www午色夜在线视频| 亚洲精品一区二区三区影院| 国产精品你懂的在线欣赏| 久久精品人人做人人综合| 中文字幕一区二区三区精华液| 亚洲成人久久影院| 国产精品亚洲一区二区三区在线 | 成人久久视频在线观看| 欧美午夜一区二区三区免费大片| 欧美精品视频www在线观看| 久久综合视频网| 一区二区三区精品在线| 狠狠狠色丁香婷婷综合激情| 一本一道综合狠狠老| 欧美电视剧在线看免费| 亚洲激情综合网| 国产一区二区三区在线看麻豆| 99精品国产99久久久久久白柏| 欧美一级夜夜爽| 亚洲天堂精品视频| 麻豆一区二区99久久久久| 色噜噜狠狠成人中文综合| 日韩免费在线观看| 亚洲午夜久久久久久久久久久| 国产自产2019最新不卡| 欧美三级三级三级| 国产精品网曝门| 日韩激情一二三区| 一本大道久久a久久综合| 精品国产污污免费网站入口| 一区二区国产视频| av福利精品导航| 精品国产3级a| 人人超碰91尤物精品国产| 91麻豆123| 国产精品国产三级国产三级人妇| 捆绑紧缚一区二区三区视频| 欧美午夜一区二区三区免费大片| **欧美大码日韩| 懂色一区二区三区免费观看| 欧美一二三四在线| 亚洲一区二区三区四区在线| 91视频在线看| 国产精品国产自产拍高清av| 国产精品一区二区三区四区| 91精品国产入口| 亚洲国产欧美日韩另类综合| kk眼镜猥琐国模调教系列一区二区 | 欧美色窝79yyyycom| 中文字幕一区二区三区在线播放| 国产一区二区三区在线看麻豆| 日韩一级免费一区| 日本麻豆一区二区三区视频| 精品视频在线视频| 亚洲国产欧美在线人成| 欧美亚洲综合在线| 亚洲成av人综合在线观看| 欧美日韩国产精品自在自线|