📄 timer.v
字号:
//*******************************************************************--
// Copyright (c) 1999-2003 Evatronix SA --
//*******************************************************************--
// Please review the terms of the license agreement before using --
// this file. If you are not an authorized user, please destroy this --
// source code file and notify Evatronix SA immediately that you --
// inadvertently received an unauthorized copy. --
//*******************************************************************--
//---------------------------------------------------------------------
// Project name : R80515
// Project description : R80515 Microcontroller Unit
//
// File name : timer.v
// File contents : Module TIMER_0_1
// Purpose : Timer/Counter 0
// Timer/Counter 1
//
// Destination library : R80515_LIB
//
// Design Engineer : M.B. A.B. D.K.
// Quality Engineer : M.B.
// Version : 1.15.V04
// Last modification : 2003-04-15
//---------------------------------------------------------------------
`timescale 1 ns / 1 ns // timescale for following modules
//*******************************************************************--
// Modifications with respect to Version 1.01.E00 :
// 1.01.E01 :
// 2000-01-04 : Modified Timer 1 overflow in mode 2
// 1.04.E04 :
// 2000-09-25 : tcon_write_proc: modified setting int0, int1 ext. flags
// 1.04.E06 :
// 2001-05-10 : Added flip-flops for int0, int1, t0, t1 inputs
// 2001-05-16 : Added tl0, tl1, th0, th1 overflow flip-flops
// 2001-05-16 : Modified tcon_write_proc:
// 1.10.E00 :
// 2001-09-03 : Added otput ports it0, it1
// 1.10.V03 :
// 2002-01-08 : Modified timer0_write_proc and timer1_write_proc
// 1.10.E05 :
// 2002-04-04 : Modified increment th1
// 2002-04-04 : Modified write to tl0 and tl1 in mode 0
// 2002-04-04 : Modified counting timer1 (timer0 in mode3)
//*******************************************************************--
module TIMER_0_1
(
clk,
rst,
cycle,
t0,
t1,
t0ack,
t1ack,
int0,
int1,
int0ack,
int1ack,
tf0,
tf1,
ie0,
ie1,
it0,
it1,
cnt0_mode,
cnt1_mode,
t1ov,
sfrdatai,
sfrdatatim,
sfraddr,
sfrwe
);
// Declarations
// `include "utility.v"
//------------------------------------------------------------------
//---------------------------------------------------------------
// Special Function Register locations
//---------------------------------------------------------------
// 80h - 87h
parameter[6:0] P0_ID = 7'b0000000;
parameter[6:0] SP_ID = 7'b0000001;
parameter[6:0] DPL_ID = 7'b0000010;
parameter[6:0] DPH_ID = 7'b0000011;
parameter[6:0] DPL1_ID = 7'b0000100;
parameter[6:0] DPH1_ID = 7'b0000101;
parameter[6:0] PCON_ID = 7'b0000111;
parameter[6:0] WDTREL_ID = 7'b0000110;
// 88h - 8Fh
parameter[6:0] TCON_ID = 7'b0001000;
parameter[6:0] TMOD_ID = 7'b0001001;
parameter[6:0] TL0_ID = 7'b0001010;
parameter[6:0] TL1_ID = 7'b0001011;
parameter[6:0] TH0_ID = 7'b0001100;
parameter[6:0] TH1_ID = 7'b0001101;
parameter[6:0] CKCON_ID = 7'b0001110;
// 90h - 97h
parameter[6:0] P1_ID = 7'b0010000;
parameter[6:0] DPS_ID = 7'b0010010;
// 98h - 9Fh
parameter[6:0] S0CON_ID = 7'b0011000;
parameter[6:0] S0BUF_ID = 7'b0011001;
parameter[6:0] IEN2_ID = 7'b0011010;
parameter[6:0] S1CON_ID = 7'b0011011;
parameter[6:0] S1BUF_ID = 7'b0011100;
parameter[6:0] S1RELL_ID = 7'b0011101;
// A0h - A7h
parameter[6:0] P2_ID = 7'b0100000;
// A8h - AFh
parameter[6:0] IEN0_ID = 7'b0101000;
parameter[6:0] IP0_ID = 7'b0101001;
parameter[6:0] S0RELL_ID = 7'b0101010;
// B0h - B7h
parameter[6:0] P3_ID = 7'b0110000;
// B8h - BFh
parameter[6:0] IEN1_ID = 7'b0111000;
parameter[6:0] IP1_ID = 7'b0111001;
parameter[6:0] S0RELH_ID = 7'b0111010;
parameter[6:0] S1RELH_ID = 7'b0111011;
// C0h - C7h
parameter[6:0] IRCON_ID = 7'b1000000;
parameter[6:0] CCEN_ID = 7'b1000001;
parameter[6:0] CCL1_ID = 7'b1000010;
parameter[6:0] CCH1_ID = 7'b1000011;
parameter[6:0] CCL2_ID = 7'b1000100;
parameter[6:0] CCH2_ID = 7'b1000101;
parameter[6:0] CCL3_ID = 7'b1000110;
parameter[6:0] CCH3_ID = 7'b1000111;
// C8h - CFh
parameter[6:0] T2CON_ID = 7'b1001000;
parameter[6:0] T2MOD_ID = 7'b1001001;
parameter[6:0] CRCL_ID = 7'b1001010;
parameter[6:0] CRCH_ID = 7'b1001011;
parameter[6:0] TL2_ID = 7'b1001100;
parameter[6:0] TH2_ID = 7'b1001101;
// D0h - D7h
parameter[6:0] PSW_ID = 7'b1010000;
// D8h - DFh
parameter[6:0] ADCON_ID = 7'b1011000;
// E0h - E7h
parameter[6:0] ACC_ID = 7'b1100000;
// E8h - EFh
parameter[6:0] MD0_ID = 7'b1101001;
parameter[6:0] MD1_ID = 7'b1101010;
parameter[6:0] MD2_ID = 7'b1101011;
parameter[6:0] MD3_ID = 7'b1101100;
parameter[6:0] MD4_ID = 7'b1101101;
parameter[6:0] MD5_ID = 7'b1101110;
parameter[6:0] ARCON_ID = 7'b1101111;
// F0h - F7h
parameter[6:0] B_ID = 7'b1110000;
parameter[6:0] EIP_ID = 7'b1110101;
// F8h - FFh
parameter[6:0] PIO_ID = 7'b1111000;
//---------------------------------------------------------------
// Special Function Register reset values
//---------------------------------------------------------------
// 80h - 87h
parameter[7:0] P0_RV = 8'b11111111;
parameter[7:0] SP_RV = 8'b00000111;
parameter[7:0] DPL_RV = 8'b00000000;
parameter[7:0] DPH_RV = 8'b00000000;
parameter[7:0] DPL1_RV = 8'b00000000;
parameter[7:0] DPH1_RV = 8'b00000000;
parameter[7:0] PCON_RV = 8'b00000000;
parameter[7:0] WDTREL_RV = 8'b00000000;
// 88h - 8Fh
parameter[7:0] TCON_RV = 8'b00000000;
parameter[7:0] TMOD_RV = 8'b00000000;
parameter[7:0] TL0_RV = 8'b00000000;
parameter[7:0] TL1_RV = 8'b00000000;
parameter[7:0] TH0_RV = 8'b00000000;
parameter[7:0] TH1_RV = 8'b00000000;
parameter[7:0] CKCON_RV = 8'b00000001;
// 90h - 97h
parameter[7:0] P1_RV = 8'b11111111;
parameter[7:0] DPS_RV = 8'b00000000;
// 98h - 9Fh
parameter[7:0] S0CON_RV = 8'b00000000;
parameter[7:0] S0BUF_RV = 8'b00000000;
parameter[7:0] IEN2_RV = 8'b00000000;
parameter[7:0] S1CON_RV = 8'b00000000;
parameter[7:0] S1BUF_RV = 8'b00000000;
parameter[7:0] S1RELL_RV = 8'b00000000;
// A0h - A7h
parameter[7:0] P2_RV = 8'b11111111;
// A8h - AFh
parameter[7:0] IEN0_RV = 8'b00000000;
parameter[7:0] IP0_RV = 8'b00000000;
parameter[7:0] IP0_RW = 8'b01000000; // Watchdog reset
parameter[7:0] S0RELL_RV = 8'b11011001;
// B0h - B7h
parameter[7:0] P3_RV = 8'b11111111;
// B8h - BFh
parameter[7:0] IEN1_RV = 8'b00000000;
parameter[7:0] IP1_RV = 8'b00000000;
parameter[7:0] S0RELH_RV = 8'b00000011;
parameter[7:0] S1RELH_RV = 8'b00000000;
// C0h - C7h
parameter[7:0] IRCON_RV = 8'b00000000;
parameter[7:0] CCEN_RV = 8'b00000000;
parameter[7:0] CCL1_RV = 8'b00000000;
parameter[7:0] CCH1_RV = 8'b00000000;
parameter[7:0] CCL2_RV = 8'b00000000;
parameter[7:0] CCH2_RV = 8'b00000000;
parameter[7:0] CCL3_RV = 8'b00000000;
parameter[7:0] CCH3_RV = 8'b00000000;
// C8h - CFh
parameter[7:0] T2CON_RV = 8'b00000000;
parameter[7:0] T2MOD_RV = 8'b00000000;
parameter[7:0] CRCL_RV = 8'b00000000;
parameter[7:0] CRCH_RV = 8'b00000000;
parameter[7:0] TL2_RV = 8'b00000000;
parameter[7:0] TH2_RV = 8'b00000000;
// D0h - D7h
parameter[7:0] PSW_RV = 8'b00000000;
// D8h - DFh
parameter[7:0] ADCON_RV = 8'b00000000;
// E0h - E7h
parameter[7:0] ACC_RV = 8'b00000000;
// E8h - EFh
parameter[7:0] MD0_RV = 8'b00000000;
parameter[7:0] MD1_RV = 8'b00000000;
parameter[7:0] MD2_RV = 8'b00000000;
parameter[7:0] MD3_RV = 8'b00000000;
parameter[7:0] MD4_RV = 8'b00000000;
parameter[7:0] MD5_RV = 8'b00000000;
parameter[7:0] ARCON_RV = 8'b00000000;
// F0h - F7h
parameter[7:0] B_RV = 8'b00000000;
parameter[7:0] EIP_RV = 8'b00000000;
// F8h - FFh
parameter[7:0] PIO_RV = 8'b00001111;
//-----------------------------------------------------------------
// Instruction Mnemonics
//-----------------------------------------------------------------
// 00H - 0Fh
parameter[7:0] NOP = 8'b00000000;
parameter[7:0] AJMP_0 = 8'b00000001;
parameter[7:0] LJMP = 8'b00000010;
parameter[7:0] RR_A = 8'b00000011;
parameter[7:0] INC_A = 8'b00000100;
parameter[7:0] INC_ADDR = 8'b00000101;
parameter[7:0] INC_IR0 = 8'b00000110;
parameter[7:0] INC_IR1 = 8'b00000111;
parameter[7:0] INC_R0 = 8'b00001000;
parameter[7:0] INC_R1 = 8'b00001001;
parameter[7:0] INC_R2 = 8'b00001010;
parameter[7:0] INC_R3 = 8'b00001011;
parameter[7:0] INC_R4 = 8'b00001100;
parameter[7:0] INC_R5 = 8'b00001101;
parameter[7:0] INC_R6 = 8'b00001110;
parameter[7:0] INC_R7 = 8'b00001111;
// 10H - 1Fh
parameter[7:0] JBC_BIT = 8'b00010000;
parameter[7:0] ACALL_0 = 8'b00010001;
parameter[7:0] LCALL = 8'b00010010;
parameter[7:0] RRC_A = 8'b00010011;
parameter[7:0] DEC_A = 8'b00010100;
parameter[7:0] DEC_ADDR = 8'b00010101;
parameter[7:0] DEC_IR0 = 8'b00010110;
parameter[7:0] DEC_IR1 = 8'b00010111;
parameter[7:0] DEC_R0 = 8'b00011000;
parameter[7:0] DEC_R1 = 8'b00011001;
parameter[7:0] DEC_R2 = 8'b00011010;
parameter[7:0] DEC_R3 = 8'b00011011;
parameter[7:0] DEC_R4 = 8'b00011100;
parameter[7:0] DEC_R5 = 8'b00011101;
parameter[7:0] DEC_R6 = 8'b00011110;
parameter[7:0] DEC_R7 = 8'b00011111;
// 20H - 2Fh
parameter[7:0] JB_BIT = 8'b00100000;
parameter[7:0] AJMP_1 = 8'b00100001;
parameter[7:0] RET = 8'b00100010;
parameter[7:0] RL_A = 8'b00100011;
parameter[7:0] ADD_N = 8'b00100100;
parameter[7:0] ADD_ADDR = 8'b00100101;
parameter[7:0] ADD_IR0 = 8'b00100110;
parameter[7:0] ADD_IR1 = 8'b00100111;
parameter[7:0] ADD_R0 = 8'b00101000;
parameter[7:0] ADD_R1 = 8'b00101001;
parameter[7:0] ADD_R2 = 8'b00101010;
parameter[7:0] ADD_R3 = 8'b00101011;
parameter[7:0] ADD_R4 = 8'b00101100;
parameter[7:0] ADD_R5 = 8'b00101101;
parameter[7:0] ADD_R6 = 8'b00101110;
parameter[7:0] ADD_R7 = 8'b00101111;
// 30H - 3Fh
parameter[7:0] JNB_BIT = 8'b00110000;
parameter[7:0] ACALL_1 = 8'b00110001;
parameter[7:0] RETI = 8'b00110010;
parameter[7:0] RLC_A = 8'b00110011;
parameter[7:0] ADDC_N = 8'b00110100;
parameter[7:0] ADDC_ADDR = 8'b00110101;
parameter[7:0] ADDC_IR0 = 8'b00110110;
parameter[7:0] ADDC_IR1 = 8'b00110111;
parameter[7:0] ADDC_R0 = 8'b00111000;
parameter[7:0] ADDC_R1 = 8'b00111001;
parameter[7:0] ADDC_R2 = 8'b00111010;
parameter[7:0] ADDC_R3 = 8'b00111011;
parameter[7:0] ADDC_R4 = 8'b00111100;
parameter[7:0] ADDC_R5 = 8'b00111101;
parameter[7:0] ADDC_R6 = 8'b00111110;
parameter[7:0] ADDC_R7 = 8'b00111111;
// 40H - 4Fh
parameter[7:0] JC = 8'b01000000;
parameter[7:0] AJMP_2 = 8'b01000001;
parameter[7:0] ORL_ADDR_A = 8'b01000010;
parameter[7:0] ORL_ADDR_N = 8'b01000011;
parameter[7:0] ORL_A_N = 8'b01000100;
parameter[7:0] ORL_A_ADDR = 8'b01000101;
parameter[7:0] ORL_A_IR0 = 8'b01000110;
parameter[7:0] ORL_A_IR1 = 8'b01000111;
parameter[7:0] ORL_A_R0 = 8'b01001000;
parameter[7:0] ORL_A_R1 = 8'b01001001;
parameter[7:0] ORL_A_R2 = 8'b01001010;
parameter[7:0] ORL_A_R3 = 8'b01001011;
parameter[7:0] ORL_A_R4 = 8'b01001100;
parameter[7:0] ORL_A_R5 = 8'b01001101;
parameter[7:0] ORL_A_R6 = 8'b01001110;
parameter[7:0] ORL_A_R7 = 8'b01001111;
// 50H - 5Fh
parameter[7:0] JNC = 8'b01010000;
parameter[7:0] ACALL_2 = 8'b01010001;
parameter[7:0] ANL_ADDR_A = 8'b01010010;
parameter[7:0] ANL_ADDR_N = 8'b01010011;
parameter[7:0] ANL_A_N = 8'b01010100;
parameter[7:0] ANL_A_ADDR = 8'b01010101;
parameter[7:0] ANL_A_IR0 = 8'b01010110;
parameter[7:0] ANL_A_IR1 = 8'b01010111;
parameter[7:0] ANL_A_R0 = 8'b01011000;
parameter[7:0] ANL_A_R1 = 8'b01011001;
parameter[7:0] ANL_A_R2 = 8'b01011010;
parameter[7:0] ANL_A_R3 = 8'b01011011;
parameter[7:0] ANL_A_R4 = 8'b01011100;
parameter[7:0] ANL_A_R5 = 8'b01011101;
parameter[7:0] ANL_A_R6 = 8'b01011110;
parameter[7:0] ANL_A_R7 = 8'b01011111;
// 60H - 6Fh
parameter[7:0] JZ = 8'b01100000;
parameter[7:0] AJMP_3 = 8'b01100001;
parameter[7:0] XRL_ADDR_A = 8'b01100010;
parameter[7:0] XRL_ADDR_N = 8'b01100011;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -