⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 contr.jam

📁 利用一块芯片完成除时钟源、按键、扬声器和显示器(数码管)之外的所有数字电路功能。所有数字逻辑功能都在CPLD器件上用VHDL语言实现。这样设计具有体积小、设计周期短(设计过程中即可实现时序仿真)、调试
💻 JAM
📖 第 1 页 / 共 2 页
字号:
' Copyright (C) 1988-1999 Altera Corporation
' Any megafunction design, and related net list (encrypted or decrypted),
' support information, device programming or simulation file, and any other
' associated documentation or information provided by Altera or a partner
' under Altera's Megafunction Partnership Program may be used only to
' program PLD devices (but not masked PLD devices) from Altera.  Any other
' use of such megafunction design, net list, support information, device
' programming or simulation file, or any other related documentation or
' information is prohibited for any other purpose, including, but not
' limited to modification, reverse engineering, de-compiling, or use with
' any other silicon devices, unless such use is explicitly licensed under
' a separate agreement with Altera or a megafunction partner.  Title to
' the intellectual property, including patents, copyrights, trademarks,
' trade secrets, or maskworks, embodied in any such megafunction design,
' net list, support information, device programming or simulation file, or
' any other related documentation or information provided by Altera or a
' megafunction partner, remains with Altera, the megafunction partner, or
' their respective licensors.  No other licenses, including any licenses
' needed under any third party's intellectual property, are provided herein.

NOTE "CREATOR" "POF to JAM converter Version 9.21 2/10/99";

NOTE "DEVICE" "EPM7032S";

NOTE "FILE" "contr.pof";

'Device #1: EPM7032S - f:\eda\timer\contr.pof Wed May 16 15:08:18 2007

BOOLEAN A21[20320] = ACA
id000u@@@t@@@l@@@NN_@@_@@h@6iQW@@z_K9yBz@v@A_LbnzAUdt@y9uUK5d_MV
jVh@V_lq@ZQWV@rQxmV@adorrxVpvk@@lP3yxzzRMb_pLrSk_@Vvat8U9u@@NFZU
adAy@W@x@h@t@@@JGJ8oLmw@@FKd4ZIuUv@FBDm@t@VG1JafI8Z1v@@@aP9@IrxD
c4YC2f@3ysq@@V2o9@@l_9DOy@V@wU@w7_JRbzRdF@Uz@fl4yggludBBnj@Vlr_@
@0g7U@@hVHCaXJm_@@VAb4V@@@HGRy@VNxt@@FXp0KFrHtOTFAjVxpr6u@@@tlt@
jl_@TJx@@c@z@ZqXOzh@FbEMSu3_@lyp49nze@lB@nQ@rw@_@h@J7b829XaGFyV@
@d9wXH@@VN@@@_@@zp4XnlttUAg1_@@t3BzmN_@V_dPXbsu_x@Ftj2@GzFu@@@3B
j9FGYGXAym@Nx@3@F5WYe0K2V39A8aMR3y_l@x@h@Nl@@lz_@@KW4qxzURgt@tzV
lN@j1_@V@jtxzwUldsxzUFltx@e06uzqlhtx@sUlthxzUAltxz__@trxz_RwtxDK
W1xz@@_@@hg5ImKlthxzUlA05I1e8AWXu13A3ImzV@lt@zV_Fz@_@@@j@xz6FOGL
X193OaMaG613986u@Ullv8XK0AoImG505y@@@x@@lo@zUFltxVzV@tkwzUZHmGP0
C25WH273Q6QW@@lV@@@L_l@@z@_lNFC1@@@z__w@z@z@R@@xtzVVb@x@UV@txn4D
m@VlNe0FI6KH449Y7aGE46Y7aW@Vl@u1Fu@l@Bj03_@xhzV@@@xoWY9Fu@txFRI2
b6O8oW1_x@@T@@Nv@@lt@@zVWYJ25aW@@@@u19u@x@lgW1_l@xJk8HYJ6yzL@h@@
@sV@@l@@@gu160;

BOOLEAN A22[15328] = ACA
yT000u@@@t@@@d@@@V@zt@_@@@z@@@4Pmc1fCu_z@tllul@@jC0_@@Utw@zpF@x@
@TMB@@lw@@V@hrV_@Vubt@@Gl@@t@jZd@@l7l@@Bemx@zVtVw@V_pV@@lz_zV@Vk
@_@@@4t@@JKy_tFhzVoLKG3yz@@xl@@t@@@T6n8eLu@z@F14aD3i@l@xdz_DPR4z
4IcMy@@@x@@zt@@@F@_@V@@@@_@7@so4o3II6LYnAu@@@xF@@FfD82C8UonVs@l@
@zV@@@Ffl1_vd@ZCyu@@Bq@@@lt@@V@@s@_@@tz@@@uj@@F69ax@@V@z@@_@@xZW
ju@kwt@lVlt@@VL8t@_@wxz@F_vd@@d_wyl@RpV@@pQw_@@rBU@xdL_FM6Y@@V@8
J5_vlzJfde@@@F7EZ@@j@4k1qFb@z@@@x@@LGK@@FGnxV@uo@_@@VT@@@Rxh@Fcd
Wwy@@8D6_@x@dz6ux@@FbgLWd4_@_@z@@tb9QWVkx@CnAylzvjDQ0NoxV@xw@_@7
V67J8Ix4@_@@XWX40QW@txV@@@__@@Vit@@d9UIod1pe6u@@ztV@@J4v6_l@@z@@
zbdQWVwx@Gmq2BR9tb1@t@@_@t_z@@@41OG_NBv1L4A8X@@VV@@@xs@@@zs_@x@t
tF4qWK0AY2E9akYeWJyl_vu@@1W5@@201uV@38400QGXp@@ul@10000G20100001
00GJrV104@zF00000y@F_x@@5n@@x@8_@6t01K50Zu9u@@@r@@tdUz@VNVRLgo@F
YeCm@@_l@@@V@@VVw@@@TzzKfA@@o@@tjk@@V@@F@_t@@TLLtjWb0_@@RTV@zg@@
@zl@@xhk_pT@@F0;

NOTE "JAM_VERSION" "1.0";
NOTE "ALG_VERSION" "2.9";
INTEGER A0[19] =
791, 237, 253, 261, 273, 281, 293, 317, 791, 791, 791, 791, 15, 95, 95, 95, 95, 95, 95;
INTEGER A1[19] =
3144, 80, 160, 240, 320, 400, 480, 640, 160, 200, 240, 280, 64, 0, 360, 0, 0, 0, 3144;
INTEGER A2[19] =
165, 0, 0, 0, 0, 0, 0, 0, 165, 165, 165, 165, 0, 0, 0, 0, 0, 0, 0;
INTEGER A3[19] =
112, 0, 0, 0, 0, 0, 0, 0, 64, 80, 96, 112, 0, 0, 0, 0, 0, 0, 0;
INTEGER A4[19] =
648, 0, 0, 0, 0, 0, 0, 0, 504, 552, 600, 648, 0, 0, 0, 0, 0, 0, 0;
INTEGER A5[19] =
3144, 16, 32, 48, 64, 80, 96, 128, 32, 40, 48, 56, 64, 0, 360, 0, 0, 0, 3144;
INTEGER A6[19] =
32, 2, 4, 6, 8, 10, 12, 16, 0, 0, 0, 0, 0, 2, 4, 8, 16, 24, 32;
INTEGER A7[19] =
7, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0;
INTEGER A8[19] =
560, 32, 64, 96, 128, 160, 192, 256, 320, 400, 480, 560, 0, 32, 64, 128, 256, 384, 512;
INTEGER A9[21] =
126, 3, 1, 118, 1, 3, 0, 0, 0, 131, 3, 6, 0, 0, 0, 131, 3, 8, 131, 3, 12;
INTEGER A10[14] = 1, 1, 1, 3, 0, 0, 3, 6, 3, 8, 3, 8, 3, 12;
INTEGER A49[14] = 109, 1, 109, 3, 0, 0, 114, 6, 114, 8, 114, 8, 114, 12;
INTEGER A11[5 * 3 * 18] =
98, 0, 1, 98, 31, 4, 97, 31, 1, 0, 0, 0, 0, 0, 0,
96, 1, 0, 96, 2, 0, 97, 0, 1, 97, 1, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
96, 0, 0, 97, 0, 1, 96, 1, 2, 98, 0, 1, 98, 10,129,
98, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
96, 0, 0, 97, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
96, 2, 0, 97, 0, 1, 96, 1, 2, 98, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
INTEGER A14[64] =
20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240,
260, 280, 300, 340, 360, 380, 400, 440, 480, 520, 560, 600,
660, 720, 800, 900, 1000, 1300, 1600, 2000,
3, 4, 5, 7, 9, 11, 12, 14, 16, 20, 24, 28,
36, 50, 64, 86, 116, 154, 200, 280, 360, 480, 640, 860,
1140, 1540, 2000, 2800, 3600, 4800, 6400, 8600;
INTEGER A15[16] =
10, 20, 30, 40, 60, 100, 200, 500,
100, 260, 660, 1660, 4200, 10800, 28000, 60000;
INTEGER A54[30] =
65, 255, 76, 255, 84, 255, 69, 255, 82, 255,
65, 255, 32, 0, 32, 0, 0, 0, 16, 31,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
' VARIABLES
INTEGER V0 = 1;
INTEGER A12[V0] = 1;
INTEGER A13[V0] = 1 | 4;
INTEGER A25[V0] = 10;
INTEGER V1 = V0 - 1;
INTEGER V2 = 0;
INTEGER V3 = 0;
INTEGER V4 = 1;
INTEGER A17[V0];
INTEGER A48[V0];
BOOLEAN b;
INTEGER i;
INTEGER j;
INTEGER k;
INTEGER l;
INTEGER V10;
INTEGER V11;
INTEGER V12;
INTEGER V13;
BOOLEAN A18[10];
BOOLEAN A19[10];
BOOLEAN A20[10];
INTEGER V14;
INTEGER V15;
INTEGER V16;
INTEGER V18;
INTEGER V19;
INTEGER V20;
INTEGER V21;
INTEGER V23;
INTEGER V24;
INTEGER V25;
INTEGER V26;
INTEGER V27;
INTEGER V28;
INTEGER V29 = 1;
INTEGER A16[15];
INTEGER V30;
INTEGER V31;
INTEGER V32 = 0;
INTEGER V33 = 0;
INTEGER V34 = 1;
INTEGER V35 = 0;
INTEGER V36 = 0;
INTEGER V37 = 0;
INTEGER V38 = 0;
INTEGER V72 = 0;
INTEGER V73 = 0;
BOOLEAN V39 = 0;
BOOLEAN V40 = 0;
INTEGER V41 = 0;
INTEGER V42 = 0;
BOOLEAN V43 = 0;
BOOLEAN V44 = 0;
BOOLEAN V45 = 0;
INTEGER V46;
INTEGER V47;
INTEGER V48;
BOOLEAN V49 = 0;
INTEGER V51 = -1;
INTEGER V52 = -1;
BOOLEAN V74 = 0;
BOOLEAN V75 = 0;
BOOLEAN V56 = 0;
BOOLEAN V58 = 1;
BOOLEAN A41[10];
BOOLEAN V81 = 0;
BOOLEAN V82 = 0;
INTEGER V83 = 5;
INTEGER V84 = 0;
INTEGER V86 = 0;
INTEGER V68 = 0;
INTEGER V69 = 0;
BOOLEAN DO_ERASE = 0;
BOOLEAN DO_BLANKCHECK = 0;
BOOLEAN DO_PROGRAM = 0;
BOOLEAN DO_VERIFY = 0;
BOOLEAN DO_READ_UES = 0;
BOOLEAN DO_SECURE = 0;
BOOLEAN DO_SECURE_ALL = 0;
BOOLEAN USE_EXTEND_IR_DELAY_METHOD = 0;
BOOLEAN USE_FIXED_ALGORITHM = 0;
L0:
CALL L6;
LET V4 = 1;
CALL L26;
IF (V2 == 0) THEN GOTO L1;
IF (V42 == 0) THEN CALL L94;
IF ((V42 == 0) && DO_ERASE) THEN CALL L69;
IF ((V42 == 0) && DO_BLANKCHECK) THEN CALL L93;
IF ((V42 == 0) && DO_PROGRAM) THEN CALL L56;
IF ((V42 == 0) && DO_VERIFY) THEN CALL L76;
IF ((V42 == 0) && DO_SECURE) THEN CALL L252;
L1:
IF ((V42 == 0) && DO_READ_UES) THEN CALL L42;
CALL L21;
EXIT V42;
L6:
INTEGER V66 = 0;
IF (DO_PROGRAM) THEN LET DO_ERASE = 1;
IF (DO_SECURE_ALL) THEN LET DO_SECURE = 1;
IF ((DO_ERASE || DO_BLANKCHECK) && !DO_PROGRAM &&
(DO_VERIFY || DO_SECURE)) THEN LET V42 = 1;
IF (V42 != 0) THEN GOTO L16;
LET V21 = 0;
FOR i = 0 TO V1;
LET j = 1;
LET k = 1;
IF (((A13[i] & 1) == 0) ||
((A13[i] & 4) == 0)) THEN GOTO L7;
LET V2 = A12[i];
LET j = A1[V2];
LET k = A5[V2];
L7:
LET V21 = V21 + j;
LET V66 = V66 + k;
NEXT i;
BOOLEAN A26[5 * V21];
LET l = 0;
FOR i = 4 TO 0 STEP -1;
FOR j = 0 TO V1;
IF (((A13[j] & 1) == 0) ||
((A13[j] & 4) == 0)) THEN GOTO L8;
LET V2 = A12[j];
FOR k = 0 TO (A1[V2] - 1);
IF ((k % 5) == i) THEN LET A26[l] = 1;
LET l = l + 1;
NEXT k;
GOTO L9;
L8:
LET l = l + 1;
L9:
NEXT j;
NEXT i;
LET V16 = 0;
FOR i = 0 TO V1;
LET j = 1;
IF (((A13[i] & 1) == 0) ||
((A13[i] & 4) == 0)) THEN GOTO L13;
LET V2 = A12[i];
LET j = A0[V2];
L13:
LET V16 = V16 + j;
NEXT i;
LET V18 = V16;
BOOLEAN A28[V18];
LET V19 = V18;
IF (V21 > V19) THEN LET V19 = V21;
BOOLEAN A29[V19];
BOOLEAN A30[V19];
FOR i = 0 TO (V19 - 1);
LET A30[i] = 1;
NEXT i;
LET V20 = 2 * 5 * V66;
BOOLEAN A31[V20];
BOOLEAN A57[V20];
LET V12 = 0;
LET V13 = 0;
FOR i = 0 TO V1;
LET V12 = V12 + A25[i];
IF (A25[i] > V13) THEN LET V13 = A25[i];
NEXT i;
BOOLEAN A32[V12 + 50];
BOOLEAN A39[V13];
BOOLEAN A33[V13];
FOR i = 0 TO (V13 - 1);
LET A39[i] = 1;
NEXT i;
CALL L30;
IRSTOP IRPAUSE;
DRSTOP IDLE;
STATE IDLE;
LET A18[0..9] = 071;
LET V4 = 1;
CALL L267;
WAIT 10000 USEC;
L16:
RETURN;
L21:
IF (V42 == 1) THEN GOTO L22;
CALL L31;
LET A18[0..9] = 079;
CALL L267;
WAIT 10000 USEC;
STATE IDLE;
L22:
IF (V42 == 0) THEN
PRINT "DONE";
IF (V42 == 1) THEN
PRINT "Invalid option combination specified";
IF (V42 == 2) THEN
PRINT "Unrecognized device";
IF (V42 == 3) THEN
PRINT "Device revision is not supported";
IF (V42 == 4) THEN
PRINT "Device programming failure";
IF (V42 == 5) THEN
PRINT "Device is not blank";
IF (V42 == 6) THEN
PRINT "Device verify failure";
IF (V42 == 8) THEN
PRINT "Unable to read UES from device #", V84 + 1;
RETURN;
L26:
LET j = 0;
FOR i = 0 TO V1;
IF ((j <= V3) &&
((A13[i] & V4) != 0) &&
((A13[i] & 4) != 0)) THEN LET j = i + 1;
NEXT i;
IF (j > V3) THEN GOTO L27;
LET V2 = 0;
LET V3 = 0;
GOTO L28;
L27:
LET V2 = A12[j - 1];
LET V3 = j;
IF (V58) THEN GOTO L28;
LET A41[0..9] = 066;
GOTO L29;
L28:
LET A41[0..9] = 006;
L29:
RETURN;
L30:
CALL L31;
IF (V32 == 0) THEN CALL L264;
LET V10 = 0;
LET V14 = 0;
LET V15 = 0;
LET V49 = 1;
LET V34 = 0;
LET V51 = -1;
LET V52 = -1;
LET V45 = 0;
LET V29 = 1;
IF (DO_PROGRAM) THEN LET V29 = 0;
IF (DO_ERASE && V74) THEN LET V29 = 2;
RETURN;
L31:
FOR i = 0 TO V1;
LET A17[i] = (A13[i] | A48[i]);
NEXT i;
RETURN;
L42:
LET j = 0;
LET k = V1;
LET V34 = 1;
LET V29 = 1;
LET V84 = V84 - 1;
IF (V84 == -1) THEN GOTO L44;
IF ((V84 < 0) || (V84 > V1) ||
((A17[V1 - V84] & 1) == 0)) THEN
LET V42 = 8;
IF (V42 != 0) THEN GOTO L45;
L43:
LET j = V84;
LET k = V84;
L44:
FOR i = j TO k;
LET V84 = i;
PUSH i; PUSH j; PUSH k;
CALL L31;
LET V86 = 0;
IF (((A17[V1 - V84] & 1) != 0) &&
((A17[V1 - V84] & 4) != 0)) THEN
CALL L46;
POP k; POP j; POP i;
NEXT i;
L45:
RETURN;
L46:
LET V4 = 1;
LET A18[0..9] = 016;
CALL L267;
DRSCAN V21, A26[0..(V21 - 1)];
LET A18[0..9] = 01A;
CALL L267;
DRSCAN V21, A26[0..(V21 - 1)];
LET j = V1 - V84;
FOR i = 0 TO V1;
IF (((A17[i] & 1) != 0) && ((A17[i] & 4) != 0) &&
(i != j)) THEN LET A17[i] = A17[i] | 8;
NEXT i;
CALL COMPUTE_7K_N_BITS;
LET V2 = A12[j];
LET V27 = (V2 - 1) * 2;
LET i = A49[V27];
LET V48 = A49[V27 + 1];
LET V46 = A6[V2];
IF (V48 < (V46 >> 1)) THEN GOTO L47;
LET V48 = V46 - V48 - 1;
L47:
LET V27 = j + V24 + (16 * V48) + 12;
FOR V11 = i TO i + 15;
PUSH i;
PUSH V27;
CALL L210;
CALL L153;
POP V27;
POP i;
IF (A31[V27]) THEN
LET V86 = V86 | (1 << (V11 - i));
NEXT V11;
CALL L51;
RETURN;
L51:
EXPORT "USERCODE", V86;
INTEGER V85[4];
FOR i = 0 TO 3;
LET V27 = 0;
LET V85[i] = V86 & 15;
IF (V85[i] > 9) THEN LET V27 = 7;
LET V85[i] = V85[i] + 48 + V27;
LET V86 = V86 >> 4;
NEXT i;
PRINT "Device #", V84 + 1, " UES code is ",
CHR$(V85[3]), CHR$(V85[2]),
CHR$(V85[1]), CHR$(V85[0]);
RETURN;
L56:
PRINT "programming 7K device(s)...";
CALL L30;
CALL L300;
FOR V11 = 1 TO 107;
CALL L210;
CALL L236;
NEXT V11;
LET V49 = 1;
FOR V11 = 109 TO (V32 - 1);
CALL L210;
CALL L236;
NEXT V11;
RETURN;
L63:
LET A18[0..9] = A41[0..9];
CALL L267;
LET A18[0..9] = 00E;
CALL L267;
LET A18[0..9] = 00A;
CALL L267;
IF (V58) THEN LET V56 = 1;
WAIT (V38 * 1000) USEC;
IF (V58) THEN GOTO L64;
IF (V82) THEN LET V83 = 20000;
LET A18[0..9] = 06A;
CALL L267;
LET V83 = 5;
LET A18[0..9] = 06E;
CALL L267;
L64:
LET A18[0..9] = 012;
CALL L267;
RETURN;
L65:
LET A18[0..9] = A41[0..9];
CALL L267;
LET A18[0..9] = 00A;
CALL L267;
IF (V58) THEN LET V56 = 1;
WAIT (V37 * 100) USEC;
IF (V58) THEN GOTO L66;
LET A18[0..9] = 06E;
CALL L267;
L66:
LET A18[0..9] = 012;
CALL L267;
RETURN;
L67:
CALL L31;
FOR i = 0 TO V1;
IF (((A17[i] & 1) == 0) || ((A17[i] & 4) == 0))
THEN GOTO L68;
IF (V82 && ((A48[i] & 128) == 0))
THEN LET A17[i] = A17[i] | 8;
IF (!V82 && ((A48[i] & 128) != 0))
THEN LET A17[i] = A17[i] | 8;
L68:
NEXT i;
IF (V82) THEN LET A41[0..9] = 066;
IF (!V82 && V58) THEN LET A41[0..9] = 006;
RETURN;
L69:
LET A18[0..9] = 012;
CALL L267;
LET A18[0..9] = 01E;
CALL L267;
DRSCAN V16, A30[0..(V16 - 1)];
L70:
CALL L67;
LET b = V58;
IF (V82) THEN LET V58 = 0;
CALL L63;
LET V58 = b;
IF (!V82) THEN GOTO L71;
LET V82 = 0;
GOTO L70;
L71:
LET A18[0..9] = 01E;
CALL L267;
DRSCAN V16, A29[0..(V16 - 1)];
IF (DO_PROGRAM) THEN GOTO L72;
LET V75 = 1;
FOR V11 = 102 TO 103;
CALL L210;
CALL L236;
NEXT V11;
LET V75 = 0;
L72:
RETURN;
L76:
IF (V74) THEN PRINT "blank checking 7K device(s)...";
IF (!V74) THEN PRINT "verifying 7K device(s)...";
CALL L30;
CALL L300;
CALL L290;
FOR V11 = 1 TO 101;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -