m8051.vhd
来自「another 8051 core porocesssor vhdl sourc」· VHDL 代码 · 共 1,209 行 · 第 1/3 页
VHD
1,209 行
NX1 => NX2 ); --*********************************************************************U5:m3s006boport map( TMPDAT => TMPDAT, PROGRAM_COUNT => PROGRAM_COUNT, RDAT => RDAT, IMMDAT => IMMDAT, CODAT => CODAT, DPH => DPH, DPL => DPL, BREG => BREG, TMPADD => TMPADD, CYC => CYC(1 downto 1), STATD => STATD(5 downto 2), LOGDI => LOGDI, DIV2CK => DIV2CK2, NX1 => NX2, RST => RST ); --*********************************************************************U6:m3s007boport map( C_TRUE => C_TRUE, ALUDAT => ALUDAT, OPC => OPC(7 downto 4), PSWDAT => PSWDAT(7 downto 7), CYC => CYC(2 downto 2), STATD => STATD(3 downto 3), BBIT => BBIT, DIV2CK => DIV2CK2, NX1 => NX2, RST => RST ); --*********************************************************************U7:m3s008boport map( WEP => WEP, NFOE => NFOE, NFWE => NFWE, NSFROE => NSFROE, NSFRWE => NSFRWE, RAMDI => RAMDI, FA => LFA, BIT_POSN => BIT_POSN, RDAT => RDAT, SFRW => SFRW, JBC => JBC, EITHER_RET => EITHER_RET, C_TRUE => C_TRUE, NESFR => NESFR, CLEAR => CLEAR, LCYC => LCYC, RESINT => RESINT, DIV2CK => DIV2CK2, NX1 => NX2, RST => RST, ALUDAT => ALUDAT, IMMDAT => IMMDAT, SFRDAT => SFRDAT, SP => SP, IROMD => IROMD, FI => FI, CYC => CYC(2 downto 1), OPC => OPC(3 downto 0), PSWDAT => PSWDAT(4 downto 3), REGADD => REGADD, STATD => STATD(6 downto 1), STACK_DATA => STACK_DATA );--*********************************************************************U8:m3s010boport map( EXT_PROG_EN => EXT_PROG_EN, EXT_ROM => EXT_ROM, DPL => DPL, DPH => DPH, STACK_DATA => STACK_DATA, PROGRAM_COUNT => PROGRAM_COUNT, PROGRAM_ADDR => PROGRAM_ADDR, NEA => NEA, LCYC => LCYC, DLM => LDLM, DLMSTB => DLMSTB, INTA => INTA, IDLE => PCON(0), C_TRUE => C_TRUE, CLEAR => CLEAR, DIV2CK => DIV2CK2, NX1 => NX2, RDAT => RDAT, ALUDAT => ALUDAT, IMMDAT => IMMDAT, VECTOR_ADDR => VECTOR_ADDR, RAMDI => RAMDI, MSIZ => MSIZ, CYC => CYC(2 downto 1), OPC => OPC(7 downto 5), PCADD => PCADD, ADDR_11BIT => ADDR_11BIT, JMPADPTR => JMPADPTR, STATD => STATD(6 downto 1), SFRW => SFRW(15 downto 14) );--*********************************************************************U9:m3s015boport map( LOV1 => LOV1, TCON => TCON, TMOD => TMOD, TLA => TLA, TLB => TLB, THA => THA, THB => THB, IACK => IACK, DI => DI(5 downto 2), STATD => STATD(6 downto 6), RAMDI => RAMDI, SFRW => SFRW(9 downto 4), RMW => RMW, S_EN => S_EN, T_EN => T_EN, STATE12 => STATE12, DIV2CK1 => DIV2CK1, NX1 => NX1, NX2 => NX2, CLEAR => CLEAR );--*********************************************************************U10:m3s018boport map( ALE => ALE, NPSEN => NPSEN, MOEI => MOEI, EXPMEM =>EXPMEM, OAI => OAI, OB => OB, OC => OC, OD => OD, AE => AE, BE => BE, CE => CE, DE => DE, PORTA => PORTA, PORTB => PORTB, PORTC => PORTC, PORTD => PORTD, PROGRAM_ADDR => PROGRAM_ADDR, AI => AI, BI => BI, CI =>CI, DI => DI, RAMDI => RAMDI, DPL => DPL, DPH => DPH, ACCDAT => ACCDAT, FA => LFA, STATD => STATD(6 downto 1), MOVX => MOVX, SFRW => SFRW(3 downto 0), CYC => CYC(2 downto 1), PCON => PCON(0 downto 0), XROM => EXT_ROM, EXT_PROG_EN => EXT_PROG_EN, NEA => NEA, RXDO => RXDO, TXDO => TXDO, RMW => RMW, DIV2CK => DIV2CK2, NX1 => NX1, NX2 => NX2, CLEAR => CLEAR, RST => RST, DLMR => DLMR );--*********************************************************************U11:m3s019boport map( INTA => INTA, IE => IE, IP => IP, VECTOR_ADDR => VECTOR_ADDR, IACK => IACK, RITI => RITI, WEP => WEP, RETI => RETI, LCYC => LCYC, T_EN => T_EN, S_EN => S_EN, DIV2CK => DIV2CK1, CLEAR => CLEAR, RST => RST, NX1 => NX1, NX2 => NX2, STATD => STATD(1 downto 1), CYC => CYC(2 downto 2), TCON => TCON(7 downto 1), RAMDI => RAMDI, SFRW => SFRW(13 downto 12) );--*********************************************************************U12:m3s020boport map( RESINT => RESINT, SP => SP, PCON => PCON, PSWDAT => PSWDAT, MSIZ => MSIZ, CO => CO, ACO => ACO, OV => OV, PAR => PAR, DAA => DAA, MULDIV => MULDIV, CJNE => CJNE, OPLOAD => OPLOAD, INTA => INTA, LCYC => LCYC, DIV2CK2 => DIV2CK2, CLEAR => CLEAR, RST => RST, STATE12 => STATE12, NX1 => NX1, NX2 => NX2, CYC => CYC(2 downto 1), PSWC => PSWC, SPC => SPC, STATD => STATD(6 downto 1), RAMDI => RAMDI, SFRW => SFRW(19 downto 16) );--*********************************************************************U13:m3s023boport map( SFRDAT => SFRDAT, FA => LFA(6 downto 0), PORTA => PORTA, PORTB => PORTB, PORTC => PORTC, PORTD => PORTD, SP => SP, DPL => DPL, DPH => DPH, PCON => PCON, TCON => TCON, TMOD => TMOD, TLA => TLA, TLB => TLB, THA => THA, THB => THB, SCON => SCON, SBUF => SBUF, IE => IE, IP => IP, PSWDAT => PSWDAT, ACCDAT => ACCDAT, BREG => BREG, MSIZ => MSIZ ); --*********************************************************************U14:m3s025boport map( OPC => OPC, OPLOAD => OPLOAD, IROMD => IROMD, STATD => STATD(1 downto 1), PCON => PCON(0 downto 0), CLEAR => CLEAR, RST => RST, DIV2CK => DIV2CK2, NX1 => NX2, INTA => INTA, LCYC => LCYC, DLM => LDLM );--*********************************************************************U15:m3s028boport map( SCON => SCON, SBUF => SBUF, RITI => RITI, RXDO => RXDO, TXDO => TXDO, DI => DI(0 downto 0), STATE12 => STATE12, RAMDI => RAMDI, PCON => PCON(7 downto 7), SFRW => SFRW(11 downto 10), LOV1 => LOV1, S_EN => S_EN, T_EN => T_EN, DIV2CK1 => DIV2CK1, NX1 => NX1, NX2 => NX2, CLEAR => CLEAR );--*********************************************************************-- Process Definitions--*********************************************************************muxoa:process(OAI, IROMD, RAMDI, AI, LDLM)-- Download mode multiplexer for combinatorial program data read and-- write paths.begin if LDLM = '0' then OA <= OAI; FO <= RAMDI; else OA <= IROMD; FO <= AI; end if;end process muxoa;--*********************************************************************misc1:process(DIV2CK2, STATD, MOVX, PCADD, IMMB4, LCYC, CYC, LDLM, DI, IMMB3, DLMSTQ)-- Immediate data register write enable and download mode controls.begin IMMDATEN <= DIV2CK2 and ((STATD(3) and MOVX(0)) or (STATD(1) and IMMB3 and not LCYC) or (STATD(4) and (CYC(1) or IMMB4)) ); DLMSTBI <= (DI(6) and DI(7)) or not LDLM; DLMR <= LDLM and not DI(7); DLMSTB <= DLMSTQ(0) and not DLMSTQ(1) and LDLM;end process misc1;--*********************************************************************muxiromd:process(MD, AI, STATD, MOVX, EXPMEM)-- Internal/external program memory multiplexerbegin if ((STATD(3) and MOVX(0)) or EXPMEM) ='0' then IROMD <= MD; else IROMD <= AI; end if;end process muxiromd;--*********************************************************************setclear:process(NX1,RST)-- Synchronous clear register.begin if RST = '1' then CLEAR <= '1'; elsif NX1'event and NX1 ='1' then if (S_EN and (CYC(1) or CLEAR)) = '1' then CLEAR <= '0'; end if; end if;end process setclear;--*********************************************************************setimmdat:process(NX2)-- Immediate program data registerbegin if NX2'event and NX2 ='1' then if IMMDATEN = '1' then IMMDAT <= IROMD; end if; end if;end process setimmdat;--*********************************************************************setdlmstq:process(NX1)-- Download mode program counter increment strobe synchroniserbeginif NX1'event and NX1 ='1' then DLMSTQ(0) <= DLMSTBI; DLMSTQ(1) <= DLMSTQ(0);end if;end process setdlmstq;--*********************************************************************direction_ap:process(RST)-- Bi-direct buffer control for PSEN and ALE signalsbegin NALEN <= RST;end process direction_ap;--*********************************************************************setdlm:process(NX1)-- Enter download mode during reset only and at least two clock edges-- after RST goes high, in order to allow ALE and PSEN to tri-state -- first.beginif NX1'event and NX1 ='1' then LDLM <= RST and not PSEI and not ALEI;end if;end process setdlm;--*********************************************************************prog_mem_strobes:process(DI,LDLM,MOEI)-- Internal program memory control outputs.-- Write strobe (NMWE) may only be active during download mode.begin NMWE <= DI(6) or not LDLM; NMOE <= (DI(7) or not LDLM) and (LDLM or not MOEI);end process prog_mem_strobes;--*********************************************************************localout:process(LFA, LDLM, PCON, PROGRAM_ADDR)-- Rename internal signals for export beyond MegaMacro boundary.begin FA <= LFA; DLM <= LDLM; XOFF <= PCON(1); IDLE <= PCON(0); M <= PROGRAM_ADDR;end process localout;--*********************************************************************end m8051_rtl;--*********************************************************************
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?