##// END OF EJS Templates
FFT sur 5 Voies Okai...
martin -
r108:ec95871b78ac martin
parent child
Show More
@@ -1,45 +1,51
1 #include <stdio.h>
1 #include <stdio.h>
2 #include "lpp_apb_functions.h"
2 #include "lpp_apb_functions.h"
3 #include "apb_fifo_Driver.h"
3 #include "apb_uart_Driver.h"
4 #include "apb_uart_Driver.h"
4 #include "apb_fft_Driver.h"
5 #include "TableTest.h"
5 #include "apb_delay_Driver.h"
6
6
7
7
8 int main()
8 int main()
9 {
9 {
10 int i=0,j=0;
11 int data1,data2;
10 char temp[256];
12 char temp[256];
11 int i;
13
12 int Table[256];
14 int TblSinA[256] = {0x0000,0x0142,0x0282,0x03C2,0x04FF,0x0638,0x076E,0x08A0,0x09CC,0x0AF2,0x0C11,0x0D29,0x0E39,0x0F40,0x103E,0x1131,0x121A,0x12F8,0x13CA,0x1490,0x1549,0x15F5,0x1694,0x1724,0x17A7,0x181B,0x187F,0x18D5,0x191C,0x1953,0x197A,0x1992,0x199A,0x1992,0x197A,0x1953,0x191C,0x18D5,0x187F,0x181B,0x17A7,0x1724,0x1694,0x15F5,0x1549,0x1490,0x13CA,0x12F8,0x121A,0x1131,0x103E,0x0F40,0x0E39,0x0D29,0x0C11,0x0AF2,0x09CC,0x08A0,0x076E,0x0638,0x04FF,0x03C2,0x0282,0x0142,0x0000,0xFEBE,0xFD7E,0xFC3E,0xFB01,0xF9C8,0xF892,0xF760,0xF634,0xF50E,0xF3EF,0xF2D7,0xF1C7,0xF0C0,0xEFC2,0xEECF,0xEDE6,0xED08,0xEC36,0xEB70,0xEAB7,0xEA0B,0xE96C,0xE8DC,0xE859,0xE7E5,0xE781,0xE72B,0xE6E4,0xE6AD,0xE686,0xE66E,0xE666,0xE66E,0xE686,0xE6AD,0xE6E4,0xE72B,0xE781,0xE7E5,0xE859,0xE8DC,0xE96C,0xEA0B,0xEAB7,0xEB70,0xEC36,0xED08,0xEDE6,0xEECF,0xEFC2,0xF0C0,0xF1C7,0xF2D7,0xF3EF,0xF50E,0xF634,0xF760,0xF892,0xF9C8,0xFB01,0xFC3E,0xFD7E,0xFEBE,0x0000,0x0142,0x0282,0x03C2,0x04FF,0x0638,0x076E,0x08A0,0x09CC,0x0AF2,0x0C11,0x0D29,0x0E39,0x0F40,0x103E,0x1131,0x121A,0x12F8,0x13CA,0x1490,0x1549,0x15F5,0x1694,0x1724,0x17A7,0x181B,0x187F,0x18D5,0x191C,0x1953,0x197A,0x1992,0x199A,0x1992,0x197A,0x1953,0x191C,0x18D5,0x187F,0x181B,0x17A7,0x1724,0x1694,0x15F5,0x1549,0x1490,0x13CA,0x12F8,0x121A,0x1131,0x103E,0x0F40,0x0E39,0x0D29,0x0C11,0x0AF2,0x09CC,0x08A0,0x076E,0x0638,0x04FF,0x03C2,0x0282,0x0142,0x0000,0xFEBE,0xFD7E,0xFC3E,0xFB01,0xF9C8,0xF892,0xF760,0xF634,0xF50E,0xF3EF,0xF2D7,0xF1C7,0xF0C0,0xEFC2,0xEECF,0xEDE6,0xED08,0xEC36,0xEB70,0xEAB7,0xEA0B,0xE96C,0xE8DC,0xE859,0xE7E5,0xE781,0xE72B,0xE6E4,0xE6AD,0xE686,0xE66E,0xE666,0xE66E,0xE686,0xE6AD,0xE6E4,0xE72B,0xE781,0xE7E5,0xE859,0xE8DC,0xE96C,0xEA0B,0xEAB7,0xEB70,0xEC36,0xED08,0xEDE6,0xEECF,0xEFC2,0xF0C0,0xF1C7,0xF2D7,0xF3EF,0xF50E,0xF634,0xF760,0xF892,0xF9C8,0xFB01,0xFC3E,0xFD7E,0xFEBE};
13 //Somme de 2 sinus//
15 int TblSinAB[256] = {0x0000,0x0D53,0x17CB,0x1D3C,0x1CA5,0x1676,0x0C6D,0x0131,0xF7B2,0xF273,0xF2F6,0xF95F,0x046D,0x11C2,0x1E77,0x27C5,0x2BB4,0x298C,0x2203,0x1712,0x0B7D,0x022B,0xFD78,0xFEA5,0x058D,0x10AC,0x1D7E,0x2913,0x30C2,0x32CD,0x2EC3,0x25A3,0x199A,0x0D80,0x0431,0xFFD9,0x0175,0x0898,0x1381,0x1F89,0x29C1,0x2FA4,0x2FAF,0x29BF,0x1F15,0x120E,0x0591,0xFC64,0xF880,0xFA9D,0x0205,0x0CBE,0x1805,0x20F3,0x252D,0x2371,0x1BE6,0x100E,0x0270,0xF5FB,0xED58,0xEA48,0xED39,0xF530,0x0000,0x0AD0,0x12C7,0x15B8,0x12A8,0x0A05,0xFD90,0xEFF2,0xE41A,0xDC8F,0xDAD3,0xDF0D,0xE7FB,0xF342,0xFDFB,0x0563,0x0780,0x039C,0xFA6F,0xEDF2,0xE0EB,0xD641,0xD051,0xD05C,0xD63F,0xE077,0xEC7F,0xF768,0xFE8B,0x0027,0xFBCF,0xF280,0xE666,0xDA5D,0xD13D,0xCD33,0xCF3E,0xD6ED,0xE282,0xEF54,0xFA73,0x015B,0x0288,0xFDD5,0xF483,0xE8EE,0xDDFD,0xD674,0xD44C,0xD83B,0xE189,0xEE3E,0xFB93,0x06A1,0x0D0A,0x0D8D,0x084E,0xFECF,0xF393,0xE98A,0xE35B,0xE2C4,0xE835,0xF2AD,0x0000,0x0D53,0x17CB,0x1D3C,0x1CA5,0x1676,0x0C6D,0x0131,0xF7B2,0xF273,0xF2F6,0xF95F,0x046D,0x11C2,0x1E77,0x27C5,0x2BB4,0x298C,0x2203,0x1712,0x0B7D,0x022B,0xFD78,0xFEA5,0x058D,0x10AC,0x1D7E,0x2913,0x30C2,0x32CD,0x2EC3,0x25A3,0x199A,0x0D80,0x0431,0xFFD9,0x0175,0x0898,0x1381,0x1F89,0x29C1,0x2FA4,0x2FAF,0x29BF,0x1F15,0x120E,0x0591,0xFC64,0xF880,0xFA9D,0x0205,0x0CBE,0x1805,0x20F3,0x252D,0x2371,0x1BE6,0x100E,0x0270,0xF5FB,0xED58,0xEA48,0xED39,0xF530,0x0000,0x0AD0,0x12C7,0x15B8,0x12A8,0x0A05,0xFD90,0xEFF2,0xE41A,0xDC8F,0xDAD3,0xDF0D,0xE7FB,0xF342,0xFDFB,0x0563,0x0780,0x039C,0xFA6F,0xEDF2,0xE0EB,0xD641,0xD051,0xD05C,0xD63F,0xE077,0xEC7F,0xF768,0xFE8B,0x0027,0xFBCF,0xF280,0xE666,0xDA5D,0xD13D,0xCD33,0xCF3E,0xD6ED,0xE282,0xEF54,0xFA73,0x015B,0x0288,0xFDD5,0xF483,0xE8EE,0xDDFD,0xD674,0xD44C,0xD83B,0xE189,0xEE3E,0xFB93,0x06A1,0x0D0A,0x0D8D,0x084E,0xFECF,0xF393,0xE98A,0xE35B,0xE2C4,0xE835,0xF2AD};
14 //int Tablo[256] = {0x00000000,0x0DA20000,0x1B080000,0x27F70000,0x34380000,0x3F960000,0x49E10000,0x52F10000,0x5AA10000,0x60D60000,0x657D0000,0x688C0000,0x69FE0000,0x69DB0000,0x68310000,0x65170000,0x60A90000,0x5B0D0000,0x546D0000,0x4CF90000,0x44E30000,0x3C610000,0x33AA0000,0x2AF40000,0x22750000,0x1A610000,0x12E70000,0x0C310000,0x06660000,0x01A30000,0xFE010000,0xFB8E0000,0xFA520000,0xFA4D0000,0xFB770000,0xFDBE0000,0x010A0000,0x053E0000,0x0A330000,0x0FBF0000,0x15B30000,0x1BDE0000,0x220C0000,0x28080000,0x2D9D0000,0x329B0000,0x36D20000,0x3A170000,0x3C440000,0x3D390000,0x3CDE0000,0x3B210000,0x37F90000,0x33650000,0x2D6D0000,0x26210000,0x1D990000,0x13F30000,0x09570000,0xFDF10000,0xF1F20000,0xE58F0000,0xD9030000,0xCC870000,0xC0560000,0xB4AA0000,0xA9BC0000,0x9FBF0000,0x96E40000,0x8F570000,0x893A0000,0x84AB0000,0x81BF0000,0x80830000,0x80FB0000,0x83220000,0x86EC0000,0x8C430000,0x93090000,0x9B1B0000,0xA44D0000,0xAE700000,0xB9500000,0xC4B40000,0xD0630000,0xDC240000,0xE7BD0000,0xF2F60000,0xFD9A0000,0x077A0000,0x106B0000,0x18480000,0x1EF30000,0x24570000,0x28650000,0x2B160000,0x2C6F0000,0x2C790000,0x2B470000,0x28F30000,0x259E0000,0x216E0000,0x1C8F0000,0x17310000,0x11860000,0x0BC10000,0x06170000,0x00BA0000,0xFBDD0000,0xF7AC0000,0xF44F0000,0xF1EA0000,0xF09C0000,0xF0790000,0xF1900000,0xF3E80000,0xF77E0000,0xFC4A0000,0x02370000,0x092E0000,0x110E0000,0x19AF0000,0x22E40000,0x2C7C0000,0x36420000,0x3FFF0000,0x497C0000,0x52810000,0x5AD70000,0x624B0000,0x68AD0000,0x6DD40000,0x71990000,0x73E10000,0x74950000,0x73A60000,0x71100000,0x6CD60000,0x67040000,0x5FAD0000,0x56EE0000,0x4CEA0000,0x41CD0000,0x35C50000,0x29070000,0x1BCC0000,0x0E4E0000,0x00CA0000,0xF37C0000,0xE69C0000,0xDA620000,0xCF040000,0xC4AE0000,0xBB8B0000,0xB3BC0000,0xAD5C0000,0xA87D0000,0xA5290000,0xA3630000,0xA3220000,0xA4590000,0xA6EF0000,0xAAC80000,0xAFBD0000,0xB5A40000,0xBC4F0000,0xC38B0000,0xCB220000,0xD2E00000,0xDA8E0000,0xE1F70000,0xE8EC0000,0xEF3C0000,0xF4C10000,0xF9560000,0xFCDF0000,0xFF470000,0x007F0000,0x00850000,0xFF5C0000,0xFD0B0000,0xF9A80000,0xF54B0000,0xF0170000,0xEA320000,0xE3C90000,0xDD0B0000,0xD62B0000,0xCF5F0000,0xC8DA0000,0xC2D30000,0xBD7A0000,0xB8FF0000,0xB58D0000,0xB3490000,0xB2510000,0xB2BE0000,0xB49F0000,0xB7FC0000,0xBCD60000,0xC3220000,0xCAD10000,0xD3C70000,0xDDE50000,0xE9030000,0xF4F20000,0x01800000,0x0E770000,0x1B9D0000,0x28B70000,0x35880000,0x41D70000,0x4D6C0000,0x58100000,0x61950000,0x69D00000,0x709C0000,0x75DE0000,0x79800000,0x7B750000,0x7BBB0000,0x7A570000,0x77550000,0x72CB0000,0x6CD70000,0x659E0000,0x5D490000,0x54090000,0x4A110000,0x3F980000,0x34D80000,0x2A090000,0x1F630000,0x151D0000,0x0B690000,0x02760000,0xFA6F0000,0xF3730000,0xEDA10000,0xE90B0000,0xE5BF0000,0xE3C00000,0xE30A0000,0xE38F0000,0xE53D0000,0xE7F80000,0xEB9D0000,0xF0050000,0xF5030000,0xFA680000,0x00000000,0x05980000,0x0AFD0000,0x0FFB0000,0x14630000,0x18080000};
16 int TblSinB[256] = {0x0000,0x0C11,0x1549,0x197A,0x17A7,0x103E,0x04FF,0xF892,0xEDE6,0xE781,0xE6E4,0xEC36,0xF634,0x0282,0x0E39,0x1694,0x199A,0x1694,0x0E39,0x0282,0xF634,0xEC36,0xE6E4,0xE781,0xEDE6,0xF892,0x04FF,0x103E,0x17A7,0x197A,0x1549,0x0C11,0x0000,0xF3EF,0xEAB7,0xE686,0xE859,0xEFC2,0xFB01,0x076E,0x121A,0x187F,0x191C,0x13CA,0x09CC,0xFD7E,0xF1C7,0xE96C,0xE666,0xE96C,0xF1C7,0xFD7E,0x09CC,0x13CA,0x191C,0x187F,0x121A,0x076E,0xFB01,0xEFC2,0xE859,0xE686,0xEAB7,0xF3EF,0x0000,0x0C11,0x1549,0x197A,0x17A7,0x103E,0x04FF,0xF892,0xEDE6,0xE781,0xE6E4,0xEC36,0xF634,0x0282,0x0E39,0x1694,0x199A,0x1694,0x0E39,0x0282,0xF634,0xEC36,0xE6E4,0xE781,0xEDE6,0xF892,0x04FF,0x103E,0x17A7,0x197A,0x1549,0x0C11,0x0000,0xF3EF,0xEAB7,0xE686,0xE859,0xEFC2,0xFB01,0x076E,0x121A,0x187F,0x191C,0x13CA,0x09CC,0xFD7E,0xF1C7,0xE96C,0xE666,0xE96C,0xF1C7,0xFD7E,0x09CC,0x13CA,0x191C,0x187F,0x121A,0x076E,0xFB01,0xEFC2,0xE859,0xE686,0xEAB7,0xF3EF,0x0000,0x0C11,0x1549,0x197A,0x17A7,0x103E,0x04FF,0xF892,0xEDE6,0xE781,0xE6E4,0xEC36,0xF634,0x0282,0x0E39,0x1694,0x199A,0x1694,0x0E39,0x0282,0xF634,0xEC36,0xE6E4,0xE781,0xEDE6,0xF892,0x04FF,0x103E,0x17A7,0x197A,0x1549,0x0C11,0x0000,0xF3EF,0xEAB7,0xE686,0xE859,0xEFC2,0xFB01,0x076E,0x121A,0x187F,0x191C,0x13CA,0x09CC,0xFD7E,0xF1C7,0xE96C,0xE666,0xE96C,0xF1C7,0xFD7E,0x09CC,0x13CA,0x191C,0x187F,0x121A,0x076E,0xFB01,0xEFC2,0xE859,0xE686,0xEAB7,0xF3EF,0x0000,0x0C11,0x1549,0x197A,0x17A7,0x103E,0x04FF,0xF892,0xEDE6,0xE781,0xE6E4,0xEC36,0xF634,0x0282,0x0E39,0x1694,0x199A,0x1694,0x0E39,0x0282,0xF634,0xEC36,0xE6E4,0xE781,0xEDE6,0xF892,0x04FF,0x103E,0x17A7,0x197A,0x1549,0x0C11,0x0000,0xF3EF,0xEAB7,0xE686,0xE859,0xEFC2,0xFB01,0x076E,0x121A,0x187F,0x191C,0x13CA,0x09CC,0xFD7E,0xF1C7,0xE96C,0xE666,0xE96C,0xF1C7,0xFD7E,0x09CC,0x13CA,0x191C,0x187F,0x121A,0x076E,0xFB01,0xEFC2,0xE859,0xE686,0xEAB7,0xF3EF};
15 //1 Sinus//
17 int TblSinBC[256] = {0x0000,0x0E94,0x1A48,0x20E8,0x2173,0x1C4F,0x1338,0x08CF,0x0000,0xFB4B,0xFC2D,0x02CA,0x0DDB,0x1B02,0x2755,0x300E,0x3333,0x300E,0x2755,0x1B02,0x0DDB,0x02CA,0xFC2D,0xFB4B,0x0000,0x08CF,0x1338,0x1C4F,0x2173,0x20E8,0x1A48,0x0E94,0x0000,0xF16C,0xE5B8,0xDF18,0xDE8D,0xE3B1,0xECC8,0xF731,0x0000,0x04B5,0x03D3,0xFD36,0xF225,0xE4FE,0xD8AB,0xCFF2,0xCCCD,0xCFF2,0xD8AB,0xE4FE,0xF225,0xFD36,0x03D3,0x04B5,0x0000,0xF731,0xECC8,0xE3B1,0xDE8D,0xDF18,0xE5B8,0xF16C,0x0000,0x0E94,0x1A48,0x20E8,0x2173,0x1C4F,0x1338,0x08CF,0x0000,0xFB4B,0xFC2D,0x02CA,0x0DDB,0x1B02,0x2755,0x300E,0x3333,0x300E,0x2755,0x1B02,0x0DDB,0x02CA,0xFC2D,0xFB4B,0x0000,0x08CF,0x1338,0x1C4F,0x2173,0x20E8,0x1A48,0x0E94,0x0000,0xF16C,0xE5B8,0xDF18,0xDE8D,0xE3B1,0xECC8,0xF731,0x0000,0x04B5,0x03D3,0xFD36,0xF225,0xE4FE,0xD8AB,0xCFF2,0xCCCD,0xCFF2,0xD8AB,0xE4FE,0xF225,0xFD36,0x03D3,0x04B5,0x0000,0xF731,0xECC8,0xE3B1,0xDE8D,0xDF18,0xE5B8,0xF16C,0x0000,0x0E94,0x1A48,0x20E8,0x2173,0x1C4F,0x1338,0x08CF,0x0000,0xFB4B,0xFC2D,0x02CA,0x0DDB,0x1B02,0x2755,0x300E,0x3333,0x300E,0x2755,0x1B02,0x0DDB,0x02CA,0xFC2D,0xFB4B,0x0000,0x08CF,0x1338,0x1C4F,0x2173,0x20E8,0x1A48,0x0E94,0x0000,0xF16C,0xE5B8,0xDF18,0xDE8D,0xE3B1,0xECC8,0xF731,0x0000,0x04B5,0x03D3,0xFD36,0xF225,0xE4FE,0xD8AB,0xCFF2,0xCCCD,0xCFF2,0xD8AB,0xE4FE,0xF225,0xFD36,0x03D3,0x04B5,0x0000,0xF731,0xECC8,0xE3B1,0xDE8D,0xDF18,0xE5B8,0xF16C,0x0000,0x0E94,0x1A48,0x20E8,0x2173,0x1C4F,0x1338,0x08CF,0x0000,0xFB4B,0xFC2D,0x02CA,0x0DDB,0x1B02,0x2755,0x300E,0x3333,0x300E,0x2755,0x1B02,0x0DDB,0x02CA,0xFC2D,0xFB4B,0x0000,0x08CF,0x1338,0x1C4F,0x2173,0x20E8,0x1A48,0x0E94,0x0000,0xF16C,0xE5B8,0xDF18,0xDE8D,0xE3B1,0xECC8,0xF731,0x0000,0x04B5,0x03D3,0xFD36,0xF225,0xE4FE,0xD8AB,0xCFF2,0xCCCD,0xCFF2,0xD8AB,0xE4FE,0xF225,0xFD36,0x03D3,0x04B5,0x0000,0xF731,0xECC8,0xE3B1,0xDE8D,0xDF18,0xE5B8,0xF16C};
16 int Tablo[256] = {0x00000000,0x080A0000,0x100B0000,0x17FC0000,0x1FD50000,0x278E0000,0x2F1F0000,0x36800000,0x3DAA0000,0x44960000,0x4B3D0000,0x51970000,0x579F0000,0x5D4F0000,0x62A00000,0x678E0000,0x6C130000,0x702B0000,0x73D10000,0x77030000,0x79BC0000,0x7BFB0000,0x7DBC0000,0x7EFE0000,0x7FBF0000,0x80000000,0x7FBF0000,0x7EFE0000,0x7DBC0000,0x7BFB0000,0x79BC0000,0x77030000,0x73D10000,0x702B0000,0x6C130000,0x678E0000,0x62A00000,0x5D4F0000,0x579F0000,0x51970000,0x4B3D0000,0x44960000,0x3DAA0000,0x36800000,0x2F1F0000,0x278E0000,0x1FD50000,0x17FC0000,0x100B0000,0x080A0000,0x00000000,0xF7F60000,0xEFF50000,0xE8040000,0xE02B0000,0xD8720000,0xD0E10000,0xC9800000,0xC2560000,0xBB6A0000,0xB4C30000,0xAE690000,0xA8610000,0xA2B10000,0x9D600000,0x98720000,0x93ED0000,0x8FD50000,0x8C2F0000,0x88FD0000,0x86440000,0x84050000,0x82440000,0x81020000,0x80410000,0x80000000,0x80410000,0x81020000,0x82440000,0x84050000,0x86440000,0x88FD0000,0x8C2F0000,0x8FD50000,0x93ED0000,0x98720000,0x9D600000,0xA2B10000,0xA8610000,0xAE690000,0xB4C30000,0xBB6A0000,0xC2560000,0xC9800000,0xD0E10000,0xD8720000,0xE02B0000,0xE8040000,0xEFF50000,0xF7F60000,0x00000000,0x080A0000,0x100B0000,0x17FC0000,0x1FD50000,0x278E0000,0x2F1F0000,0x36800000,0x3DAA0000,0x44960000,0x4B3D0000,0x51970000,0x579F0000,0x5D4F0000,0x62A00000,0x678E0000,0x6C130000,0x702B0000,0x73D10000,0x77030000,0x79BC0000,0x7BFB0000,0x7DBC0000,0x7EFE0000,0x7FBF0000,0x80000000,0x7FBF0000,0x7EFE0000,0x7DBC0000,0x7BFB0000,0x79BC0000,0x77030000,0x73D10000,0x702B0000,0x6C130000,0x678E0000,0x62A00000,0x5D4F0000,0x579F0000,0x51970000,0x4B3D0000,0x44960000,0x3DAA0000,0x36800000,0x2F1F0000,0x278E0000,0x1FD50000,0x17FC0000,0x100B0000,0x080A0000,0x00000000,0xF7F60000,0xEFF50000,0xE8040000,0xE02B0000,0xD8720000,0xD0E10000,0xC9800000,0xC2560000,0xBB6A0000,0xB4C30000,0xAE690000,0xA8610000,0xA2B10000,0x9D600000,0x98720000,0x93ED0000,0x8FD50000,0x8C2F0000,0x88FD0000,0x86440000,0x84050000,0x82440000,0x81020000,0x80410000,0x80000000,0x80410000,0x81020000,0x82440000,0x84050000,0x86440000,0x88FD0000,0x8C2F0000,0x8FD50000,0x93ED0000,0x98720000,0x9D600000,0xA2B10000,0xA8610000,0xAE690000,0xB4C30000,0xBB6A0000,0xC2560000,0xC9800000,0xD0E10000,0xD8720000,0xE02B0000,0xE8040000,0xEFF50000,0xF7F60000,0x00000000,0x080A0000,0x100B0000,0x17FC0000,0x1FD50000,0x278E0000,0x2F1F0000,0x36800000,0x3DAA0000,0x44960000,0x4B3D0000,0x51970000,0x579F0000,0x5D4F0000,0x62A00000,0x678E0000,0x6C130000,0x702B0000,0x73D10000,0x77030000,0x79BC0000,0x7BFB0000,0x7DBC0000,0x7EFE0000,0x7FBF0000,0x80000000,0x7FBF0000,0x7EFE0000,0x7DBC0000,0x7BFB0000,0x79BC0000,0x77030000,0x73D10000,0x702B0000,0x6C130000,0x678E0000,0x62A00000,0x5D4F0000,0x579F0000,0x51970000,0x4B3D0000,0x44960000,0x3DAA0000,0x36800000,0x2F1F0000,0x278E0000,0x1FD50000,0x17FC0000,0x100B0000,0x080A0000,0x00000000,0xF7F60000,0xEFF50000,0xE8040000,0xE02B0000,0xD8720000};
18 int TblSinC[256] = {0x0000,0x0282,0x04FF,0x076E,0x09CC,0x0C11,0x0E39,0x103E,0x121A,0x13CA,0x1549,0x1694,0x17A7,0x187F,0x191C,0x197A,0x199A,0x197A,0x191C,0x187F,0x17A7,0x1694,0x1549,0x13CA,0x121A,0x103E,0x0E39,0x0C11,0x09CC,0x076E,0x04FF,0x0282,0x0000,0xFD7E,0xFB01,0xF892,0xF634,0xF3EF,0xF1C7,0xEFC2,0xEDE6,0xEC36,0xEAB7,0xE96C,0xE859,0xE781,0xE6E4,0xE686,0xE666,0xE686,0xE6E4,0xE781,0xE859,0xE96C,0xEAB7,0xEC36,0xEDE6,0xEFC2,0xF1C7,0xF3EF,0xF634,0xF892,0xFB01,0xFD7E,0x0000,0x0282,0x04FF,0x076E,0x09CC,0x0C11,0x0E39,0x103E,0x121A,0x13CA,0x1549,0x1694,0x17A7,0x187F,0x191C,0x197A,0x199A,0x197A,0x191C,0x187F,0x17A7,0x1694,0x1549,0x13CA,0x121A,0x103E,0x0E39,0x0C11,0x09CC,0x076E,0x04FF,0x0282,0x0000,0xFD7E,0xFB01,0xF892,0xF634,0xF3EF,0xF1C7,0xEFC2,0xEDE6,0xEC36,0xEAB7,0xE96C,0xE859,0xE781,0xE6E4,0xE686,0xE666,0xE686,0xE6E4,0xE781,0xE859,0xE96C,0xEAB7,0xEC36,0xEDE6,0xEFC2,0xF1C7,0xF3EF,0xF634,0xF892,0xFB01,0xFD7E,0x0000,0x0282,0x04FF,0x076E,0x09CC,0x0C11,0x0E39,0x103E,0x121A,0x13CA,0x1549,0x1694,0x17A7,0x187F,0x191C,0x197A,0x199A,0x197A,0x191C,0x187F,0x17A7,0x1694,0x1549,0x13CA,0x121A,0x103E,0x0E39,0x0C11,0x09CC,0x076E,0x04FF,0x0282,0x0000,0xFD7E,0xFB01,0xF892,0xF634,0xF3EF,0xF1C7,0xEFC2,0xEDE6,0xEC36,0xEAB7,0xE96C,0xE859,0xE781,0xE6E4,0xE686,0xE666,0xE686,0xE6E4,0xE781,0xE859,0xE96C,0xEAB7,0xEC36,0xEDE6,0xEFC2,0xF1C7,0xF3EF,0xF634,0xF892,0xFB01,0xFD7E,0x0000,0x0282,0x04FF,0x076E,0x09CC,0x0C11,0x0E39,0x103E,0x121A,0x13CA,0x1549,0x1694,0x17A7,0x187F,0x191C,0x197A,0x199A,0x197A,0x191C,0x187F,0x17A7,0x1694,0x1549,0x13CA,0x121A,0x103E,0x0E39,0x0C11,0x09CC,0x076E,0x04FF,0x0282,0x0000,0xFD7E,0xFB01,0xF892,0xF634,0xF3EF,0xF1C7,0xEFC2,0xEDE6,0xEC36,0xEAB7,0xE96C,0xE859,0xE781,0xE6E4,0xE686,0xE666,0xE686,0xE6E4,0xE781,0xE859,0xE96C,0xEAB7,0xEC36,0xEDE6,0xEFC2,0xF1C7,0xF3EF,0xF634,0xF892,0xFB01,0xFD7E};
17 printf("Debut Main\n\n");
19
18 UART_Device* uart0 = openUART(0);
20 UART_Device* uart0 = openUART(0);
19 FFT_Device* fft0 = openFFT(0);
21 FIFO_Device* fifotry = openFIFO(0);
20 DELAY_Device* delay = openDELAY(0);
22 FIFO_Device* fifoIn = openFIFO(1);
23 FIFO_Device* fifoOut = openFIFO(2);
24
25 printf("\nDebut Main\n\n");
21
26
22 printf("addr_fft: %x\n",(unsigned int)fft0);
27 FillFifo(fifoIn,0,TblSinA,256);
23 printf("addr_uart: %x\n\n",(unsigned int)uart0);
28 FillFifo(fifoIn,1,TblSinAB,256);
24 printf("cfg_fft: %x\n",fft0->ConfigReg);
29 FillFifo(fifoIn,2,TblSinB,256);
25 printf("cfg_uart: %x\n\n",uart0->ConfigReg);
30 FillFifo(fifoIn,3,TblSinBC,256);
31 FillFifo(fifoIn,4,TblSinC,256);
32
33 while(j<5){
34 while((fifoOut->FIFOreg[(2*j)+FIFO_Ctrl] & FIFO_Full) != FIFO_Full); // TANT QUE full a 0 RIEN
26
35
27 while(1)
36 sprintf(temp,"FIFO %d\n\r",j);
28 {
37 uartputs(uart0,temp);
29 FftInput(Tablo,fft0,delay);
38 //while((fifoOut->FIFOreg[(2*0)+FIFO_Ctrl] & FIFO_Empty) != FIFO_Empty){ // TANT QUE empty a 0 ALORS
30 /* for (i = 0 ; i < 256 ; i++)
39 while(i < 128){
31 {
40 data1 = (fifoOut->FIFOreg[(2*j)+FIFO_RWdata]) & Mask_4hex;
32 sprintf(temp,"%x/in",Tablo[i]);
41 data2 = (fifoOut->FIFOreg[(2*j)+FIFO_RWdata]) & Mask_4hex;
33 uartputs(uart0,temp);
42 i++;
34 }*/
43 sprintf(temp,"%d\t%d\n\r",data1,data2);
35
36 FftOutput(Table,fft0);
37 for (i = 0 ; i < 128 ; i++)
38 {
39 sprintf(temp,"%x/out",Table[i]);
40 uartputs(uart0,temp);
44 uartputs(uart0,temp);
41 }
45 }
46 i=0;
47 j++;
42 }
48 }
49 printf("\nFin Main\n\n");
43 return 0;
50 return 0;
44 }
51 }
45
@@ -1,157 +1,121
1 ------------------------------------------------------------------------------
1 ------------------------------------------------------------------------------
2 -- This file is a part of the LPP VHDL IP LIBRARY
2 -- This file is a part of the LPP VHDL IP LIBRARY
3 -- Copyright (C) 2009 - 2012, Laboratory of Plasmas Physic - CNRS
3 -- Copyright (C) 2009 - 2012, Laboratory of Plasmas Physic - CNRS
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 ------------------------------------------------------------------------------
18 ------------------------------------------------------------------------------
19 -- Author : Martin Morlot
19 -- Author : Martin Morlot
20 -- Mail : martin.morlot@lpp.polytechnique.fr
20 -- Mail : martin.morlot@lpp.polytechnique.fr
21 ------------------------------------------------------------------------------
21 ------------------------------------------------------------------------------
22 library IEEE;
22 library IEEE;
23 use IEEE.std_logic_1164.all;
23 use IEEE.std_logic_1164.all;
24 use IEEE.numeric_std.all;
24 use IEEE.numeric_std.all;
25
25
26 entity Driver_FFT is
26 entity Driver_FFT is
27 generic(
27 generic(
28 Data_sz : integer range 1 to 32 := 16
28 Data_sz : integer range 1 to 32 := 16;
29 NbData : integer range 1 to 512 := 256
29 );
30 );
30 port(
31 port(
31 clk : in std_logic;
32 clk : in std_logic;
32 rstn : in std_logic;
33 rstn : in std_logic;
33 Load : in std_logic;
34 Load : in std_logic;
34 Empty : in std_logic_vector(4 downto 0);
35 Empty : in std_logic_vector(4 downto 0);
35 Full : in std_logic_vector(4 downto 0);
36 DATA : in std_logic_vector((5*Data_sz)-1 downto 0);
36 DATA : in std_logic_vector((5*Data_sz)-1 downto 0);
37 Valid : out std_logic;
37 Valid : out std_logic;
38 Read : out std_logic_vector(4 downto 0);
38 Read : out std_logic_vector(4 downto 0);
39 Data_re : out std_logic_vector(Data_sz-1 downto 0);
39 Data_re : out std_logic_vector(Data_sz-1 downto 0);
40 Data_im : out std_logic_vector(Data_sz-1 downto 0)
40 Data_im : out std_logic_vector(Data_sz-1 downto 0)
41 );
41 );
42 end entity;
42 end entity;
43
43
44
44
45 architecture ar_Driver of Driver_FFT is
45 architecture ar_Driver of Driver_FFT is
46
46
47 type etat is (eX,e0,e1,e2);
47 type etat is (eX,e0,e1,e2);
48 signal ect : etat;
48 signal ect : etat;
49
49
50 signal FifoCpt : integer;
50 signal DataCount : integer range 0 to 255 := 0;
51 --signal DataTmp : std_logic_vector(Data_sz-1 downto 0);
51 signal FifoCpt : integer range 0 to 4 := 0;
52
52
53 signal sEmpty : std_logic;
53 signal sLoad : std_logic;
54 signal sFull : std_logic;
55 signal sData : std_logic_vector(Data_sz-1 downto 0);
56
54
57 begin
55 begin
58
56
59 process(clk,rstn)
57 process(clk,rstn)
60 begin
58 begin
61 if(rstn='0')then
59 if(rstn='0')then
62 ect <= eX;
60 ect <= e0;
63 Read <= (others => '1');
61 Read <= (others => '1');
64 Valid <= '0';
62 Valid <= '0';
65 FifoCpt <= 1;
66 Data_re <= (others => '0');
63 Data_re <= (others => '0');
67 Data_im <= (others => '0');
64 Data_im <= (others => '0');
65 DataCount <= 0;
66 FifoCpt <= 0;
67 sLoad <= '0';
68
68
69 elsif(clk'event and clk='1')then
69 elsif(clk'event and clk='1')then
70 sLoad <= Load;
70
71
72 if(sLoad='1' and Load='0')then
73 if(FifoCpt=4)then
74 FifoCpt <= 0;
75 else
76 FifoCpt <= FifoCpt + 1;
77 end if;
78 end if;
79
71 case ect is
80 case ect is
72
81
73 when eX =>
74 if(sFull='1')then
75 ect <= e0;
76 end if;
77
78 when e0 =>
82 when e0 =>
79 Valid <= '0';
83 if(Load='1' and Empty(FifoCpt)='0')then
80 if(Load='1' and sEmpty='0')then
84 Read(FifoCpt) <= '0';
81 Read(FifoCpt-1) <= '0';
85 ect <= e1;
82 ect <= e2;
83 -- ect <= e1;
84 elsif(sEmpty='1')then
85 if(FifoCpt=6)then
86 FifoCpt <= 1;
87 else
88 FifoCpt <= FifoCpt+1;
89 end if;
90 ect <= eX;
91 end if;
86 end if;
92
87
93 when e1 =>
88 when e1 =>
94 null;
89 Valid <= '0';
95 -- DataTmp <= sData;
90 Read(FifoCpt) <= '1';
96 -- ect <= e2;
91 ect <= e2;
97
92
98 when e2 =>
93 when e2 =>
99 Read(FifoCpt-1) <= '1';
94 Data_re <= DATA(((FifoCpt+1)*Data_sz)-1 downto (FifoCpt*Data_sz));
100 Data_re <= sData;
101 Data_im <= (others => '0');
95 Data_im <= (others => '0');
102 -- Data_re <= DataTmp;
103 -- Data_im <= sData;
104 Valid <= '1';
96 Valid <= '1';
97 if(DataCount=NbData-1)then
98 DataCount <= 0;
99 ect <= eX;
100 else
101 DataCount <= DataCount + 1;
102 if(Load='1' and Empty(FifoCpt)='0')then
103 Read(FifoCpt) <= '0';
104 ect <= e1;
105 else
106 ect <= eX;
107 end if;
108 end if;
109
110 when eX =>
111 Valid <= '0';
105 ect <= e0;
112 ect <= e0;
106
113
114 when others =>
115 null;
107
116
108 end case;
117 end case;
109 end if;
118 end if;
110 end process;
119 end process;
111
120
112 with FifoCpt select
121 end architecture; No newline at end of file
113 sFull <= Full(0) when 1,
114 Full(1) when 2,
115 Full(2) when 3,
116 Full(3) when 4,
117 Full(4) when 5,
118 '1' when others;
119
120 with FifoCpt select
121 sEmpty <= Empty(0) when 1,
122 Empty(1) when 2,
123 Empty(2) when 3,
124 Empty(3) when 4,
125 Empty(4) when 5,
126 '1' when others;
127
128 with FifoCpt select
129 sData <= DATA(Data_sz-1 downto 0) when 1,
130 DATA((2*Data_sz)-1 downto Data_sz) when 2,
131 DATA((3*Data_sz)-1 downto (2*Data_sz)) when 3,
132 DATA((4*Data_sz)-1 downto (3*Data_sz)) when 4,
133 DATA((5*Data_sz)-1 downto (4*Data_sz)) when 5,
134 (others => '0') when others;
135
136 end architecture;
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
@@ -1,129 +1,112
1 ------------------------------------------------------------------------------
1 ------------------------------------------------------------------------------
2 -- This file is a part of the LPP VHDL IP LIBRARY
2 -- This file is a part of the LPP VHDL IP LIBRARY
3 -- Copyright (C) 2009 - 2012, Laboratory of Plasmas Physic - CNRS
3 -- Copyright (C) 2009 - 2012, Laboratory of Plasmas Physic - CNRS
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 ------------------------------------------------------------------------------
18 ------------------------------------------------------------------------------
19 -- Author : Martin Morlot
19 -- Author : Martin Morlot
20 -- Mail : martin.morlot@lpp.polytechnique.fr
20 -- Mail : martin.morlot@lpp.polytechnique.fr
21 ------------------------------------------------------------------------------
21 ------------------------------------------------------------------------------
22 library IEEE;
22 library IEEE;
23 use IEEE.std_logic_1164.all;
23 use IEEE.std_logic_1164.all;
24 use IEEE.numeric_std.all;
24 use IEEE.numeric_std.all;
25
25
26 entity Linker_FFT is
26 entity Linker_FFT is
27 generic(
27 generic(
28 Data_sz : integer range 1 to 32 := 8
28 Data_sz : integer range 1 to 32 := 16;
29 NbData : integer range 1 to 512 := 256
29 );
30 );
30 port(
31 port(
31 clk : in std_logic;
32 clk : in std_logic;
32 rstn : in std_logic;
33 rstn : in std_logic;
33 Ready : in std_logic;
34 Ready : in std_logic;
34 Valid : in std_logic;
35 Valid : in std_logic;
35 Full : in std_logic_vector(4 downto 0);
36 Full : in std_logic_vector(4 downto 0);
36 Data_re : in std_logic_vector(Data_sz-1 downto 0);
37 Data_re : in std_logic_vector(Data_sz-1 downto 0);
37 Data_im : in std_logic_vector(Data_sz-1 downto 0);
38 Data_im : in std_logic_vector(Data_sz-1 downto 0);
38 Read : out std_logic;
39 Read : out std_logic;
39 Write : out std_logic_vector(4 downto 0);
40 Write : out std_logic_vector(4 downto 0);
40 ReUse : out std_logic_vector(4 downto 0);
41 ReUse : out std_logic_vector(4 downto 0);
41 DATA : out std_logic_vector((5*Data_sz)-1 downto 0)
42 DATA : out std_logic_vector((5*Data_sz)-1 downto 0)
42 );
43 );
43 end entity;
44 end entity;
44
45
45
46
46 architecture ar_Linker of Linker_FFT is
47 architecture ar_Linker of Linker_FFT is
47
48
48 type etat is (eX,e0,e1,e2,e3);
49 type etat is (eX,e0,e1,e2);
49 signal ect : etat;
50 signal ect : etat;
50
51
51 signal FifoCpt : integer;
52 signal DataTmp : std_logic_vector(Data_sz-1 downto 0);
52 signal DataTmp : std_logic_vector(Data_sz-1 downto 0);
53
53
54 signal sFull : std_logic;
54 signal sRead : std_logic;
55 signal sData : std_logic_vector(Data_sz-1 downto 0);
55 signal sReady : std_logic;
56 signal sReady : std_logic;
56
57 signal FifoCpt : integer range 0 to 4 := 0;
57
58
58 begin
59 begin
59
60
60 process(clk,rstn)
61 process(clk,rstn)
61 begin
62 begin
62 if(rstn='0')then
63 if(rstn='0')then
63 ect <= e0;
64 ect <= e0;
64 Read <= '0';
65 sRead <= '0';
66 sReady <= '0';
65 Write <= (others => '1');
67 Write <= (others => '1');
66 Reuse <= (others => '0');
68 Reuse <= (others => '0');
67 FifoCpt <= 1;
69 FifoCpt <= 0;
68 sDATA <= (others => '0');
69
70
70 elsif(clk'event and clk='1')then
71 elsif(clk'event and clk='1')then
71 sReady <= Ready;
72 sReady <= Ready;
72
73
74 if(sReady='1' and Ready='0')then
75 if(FifoCpt=4)then
76 FifoCpt <= 0;
77 else
78 FifoCpt <= FifoCpt + 1;
79 end if;
80 elsif(Ready='1')then
81 sRead <= not sRead;
82 else
83 sRead <= '0';
84 end if;
85
73 case ect is
86 case ect is
74
87
75 when e0 =>
88 when e0 =>
76 Write(FifoCpt-1) <= '1';
89 Write(FifoCpt) <= '1';
77 if(sReady='0' and Ready='1' and sfull='0')then
90 if(Valid='1' and Full(FifoCpt)='0')then
78 Read <= '1';
91 DataTmp <= Data_im;
92 DATA(((FifoCpt+1)*Data_sz)-1 downto (FifoCpt*Data_sz)) <= Data_re;
93 Write(FifoCpt) <= '0';
79 ect <= e1;
94 ect <= e1;
80 end if;
95 elsif(Full(FifoCpt)='1')then
81
96 ReUse(FifoCpt) <= '1';
82 when e1 =>
83 Read <= '0';
84 if(Valid='1' and sfull='0')then
85 DataTmp <= Data_im;
86 sDATA <= Data_re;
87 Write(FifoCpt-1) <= '0';
88 ect <= e2;
89 elsif(sfull='1')then
90 ReUse(FifoCpt-1) <= '1';
91 ect <= eX;
92 end if;
97 end if;
93
98
94 when e2 =>
99 when e1 =>
95 sDATA <= DataTmp;
100 DATA(((FifoCpt+1)*Data_sz)-1 downto (FifoCpt*Data_sz)) <= DataTmp;
96 ect <= e3;
101 ect <= e0;
97
98 when e3 =>
99 Write(FifoCpt-1) <= '1';
100 if(Ready='1' and sfull='0')then
101 Read <= '1';
102 ect <= e1;
103 end if;
104
102
105 when eX =>
103 when others =>
106 if(FifoCpt=5)then
104 null;
107 FifoCpt <= 1;
108 else
109 FifoCpt <= FifoCpt+1;
110 end if;
111 ect <= e0;
112
105
113 end case;
106 end case;
114 end if;
107 end if;
115 end process;
108 end process;
116
109
117 DATA <= sData & sData & sData & sData & sData;
110 Read <= sRead;
118
111
119 with FifoCpt select
112 end architecture; No newline at end of file
120 sFull <= Full(0) when 1,
121 Full(1) when 2,
122 Full(2) when 3,
123 Full(3) when 4,
124 Full(4) when 5,
125 '1' when others;
126
127
128 end architecture;
129
@@ -1,243 +1,244
1 ------------------------------------------------------------------------------
1 ------------------------------------------------------------------------------
2 -- This file is a part of the LPP VHDL IP LIBRARY
2 -- This file is a part of the LPP VHDL IP LIBRARY
3 -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS
3 -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 3 of the License, or
7 -- the Free Software Foundation; either version 3 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 ------------------------------------------------------------------------------
18 ------------------------------------------------------------------------------
19 -- Author : Martin Morlot
19 -- Author : Martin Morlot
20 -- Mail : martin.morlot@lpp.polytechnique.fr
20 -- Mail : martin.morlot@lpp.polytechnique.fr
21 ------------------------------------------------------------------------------
21 ------------------------------------------------------------------------------
22 library ieee;
22 library ieee;
23 use ieee.std_logic_1164.all;
23 use ieee.std_logic_1164.all;
24 library grlib;
24 library grlib;
25 use grlib.amba.all;
25 use grlib.amba.all;
26 use std.textio.all;
26 use std.textio.all;
27 library lpp;
27 library lpp;
28 use lpp.lpp_amba.all;
28 use lpp.lpp_amba.all;
29 use lpp.lpp_memory.all;
29 use lpp.lpp_memory.all;
30 use work.fft_components.all;
30 use work.fft_components.all;
31
31
32 --! Package contenant tous les programmes qui forment le composant intοΏ½grοΏ½ dans le lοΏ½on
32 --! Package contenant tous les programmes qui forment le composant intοΏ½grοΏ½ dans le lοΏ½on
33
33
34 package lpp_fft is
34 package lpp_fft is
35
35
36 component APB_FFT is
36 component APB_FFT is
37 generic (
37 generic (
38 pindex : integer := 0;
38 pindex : integer := 0;
39 paddr : integer := 0;
39 paddr : integer := 0;
40 pmask : integer := 16#fff#;
40 pmask : integer := 16#fff#;
41 pirq : integer := 0;
41 pirq : integer := 0;
42 abits : integer := 8;
42 abits : integer := 8;
43 Data_sz : integer := 16
43 Data_sz : integer := 16
44 );
44 );
45 port (
45 port (
46 clk : in std_logic;
46 clk : in std_logic;
47 rst : in std_logic; --! Reset general du composant
47 rst : in std_logic; --! Reset general du composant
48 apbi : in apb_slv_in_type;
48 apbi : in apb_slv_in_type;
49 apbo : out apb_slv_out_type
49 apbo : out apb_slv_out_type
50 );
50 );
51 end component;
51 end component;
52
52
53
53
54 component APB_FFT_half is
54 component APB_FFT_half is
55 generic (
55 generic (
56 pindex : integer := 0;
56 pindex : integer := 0;
57 paddr : integer := 0;
57 paddr : integer := 0;
58 pmask : integer := 16#fff#;
58 pmask : integer := 16#fff#;
59 pirq : integer := 0;
59 pirq : integer := 0;
60 abits : integer := 8;
60 abits : integer := 8;
61 Data_sz : integer := 16
61 Data_sz : integer := 16
62 );
62 );
63 port (
63 port (
64 clk : in std_logic; --! Horloge du composant
64 clk : in std_logic; --! Horloge du composant
65 rst : in std_logic; --! Reset general du composant
65 rst : in std_logic; --! Reset general du composant
66 Ren : in std_logic;
66 Ren : in std_logic;
67 ready : out std_logic;
67 ready : out std_logic;
68 valid : out std_logic;
68 valid : out std_logic;
69 DataOut_re : out std_logic_vector(Data_sz-1 downto 0);
69 DataOut_re : out std_logic_vector(Data_sz-1 downto 0);
70 DataOut_im : out std_logic_vector(Data_sz-1 downto 0);
70 DataOut_im : out std_logic_vector(Data_sz-1 downto 0);
71 OUTfill : out std_logic;
71 OUTfill : out std_logic;
72 OUTwrite : out std_logic;
72 OUTwrite : out std_logic;
73 apbi : in apb_slv_in_type; --! Registre de gestion des entrοΏ½es du bus
73 apbi : in apb_slv_in_type; --! Registre de gestion des entrοΏ½es du bus
74 apbo : out apb_slv_out_type --! Registre de gestion des sorties du bus
74 apbo : out apb_slv_out_type --! Registre de gestion des sorties du bus
75 );
75 );
76 end component;
76 end component;
77
77
78
78
79 component Flag_Extremum is
79 component Flag_Extremum is
80 port(
80 port(
81 clk,raz : in std_logic; --! Horloge et Reset gοΏ½nοΏ½ral du composant
81 clk,raz : in std_logic; --! Horloge et Reset gοΏ½nοΏ½ral du composant
82 load : in std_logic; --! Signal en provenance de CoreFFT
82 load : in std_logic; --! Signal en provenance de CoreFFT
83 y_rdy : in std_logic; --! Signal en provenance de CoreFFT
83 y_rdy : in std_logic; --! Signal en provenance de CoreFFT
84 fill : out std_logic; --! Flag, Va permettre d'autoriser l'οΏ½criture (Driver C)
84 fill : out std_logic; --! Flag, Va permettre d'autoriser l'οΏ½criture (Driver C)
85 ready : out std_logic --! Flag, Va permettre d'autoriser la lecture (Driver C)
85 ready : out std_logic --! Flag, Va permettre d'autoriser la lecture (Driver C)
86 );
86 );
87 end component;
87 end component;
88
88
89
89
90 component Linker_FFT is
90 component Linker_FFT is
91 generic(
91 generic(
92 Data_sz : integer range 1 to 32 := 16
92 Data_sz : integer range 1 to 32 := 16;
93 NbData : integer range 1 to 512 := 256
93 );
94 );
94 port(
95 port(
95 clk : in std_logic;
96 clk : in std_logic;
96 rstn : in std_logic;
97 rstn : in std_logic;
97 Ready : in std_logic;
98 Ready : in std_logic;
98 Valid : in std_logic;
99 Valid : in std_logic;
99 Full : in std_logic_vector(4 downto 0);
100 Full : in std_logic_vector(4 downto 0);
100 Data_re : in std_logic_vector(Data_sz-1 downto 0);
101 Data_re : in std_logic_vector(Data_sz-1 downto 0);
101 Data_im : in std_logic_vector(Data_sz-1 downto 0);
102 Data_im : in std_logic_vector(Data_sz-1 downto 0);
102 Read : out std_logic;
103 Read : out std_logic;
103 Write : out std_logic_vector(4 downto 0);
104 Write : out std_logic_vector(4 downto 0);
104 ReUse : out std_logic_vector(4 downto 0);
105 ReUse : out std_logic_vector(4 downto 0);
105 DATA : out std_logic_vector((5*Data_sz)-1 downto 0)
106 DATA : out std_logic_vector((5*Data_sz)-1 downto 0)
106 );
107 );
107 end component;
108 end component;
108
109
109
110
110 component Driver_FFT is
111 component Driver_FFT is
111 generic(
112 generic(
112 Data_sz : integer range 1 to 32 := 16
113 Data_sz : integer range 1 to 32 := 16;
114 NbData : integer range 1 to 512 := 256
113 );
115 );
114 port(
116 port(
115 clk : in std_logic;
117 clk : in std_logic;
116 rstn : in std_logic;
118 rstn : in std_logic;
117 Load : in std_logic;
119 Load : in std_logic;
118 Empty : in std_logic_vector(4 downto 0);
120 Empty : in std_logic_vector(4 downto 0);
119 Full : in std_logic_vector(4 downto 0);
120 DATA : in std_logic_vector((5*Data_sz)-1 downto 0);
121 DATA : in std_logic_vector((5*Data_sz)-1 downto 0);
121 Valid : out std_logic;
122 Valid : out std_logic;
122 Read : out std_logic_vector(4 downto 0);
123 Read : out std_logic_vector(4 downto 0);
123 Data_re : out std_logic_vector(Data_sz-1 downto 0);
124 Data_re : out std_logic_vector(Data_sz-1 downto 0);
124 Data_im : out std_logic_vector(Data_sz-1 downto 0)
125 Data_im : out std_logic_vector(Data_sz-1 downto 0)
125 );
126 );
126 end component;
127 end component;
127
128
128 component FFTamont is
129 component FFTamont is
129 generic(
130 generic(
130 Data_sz : integer range 1 to 32 := 16;
131 Data_sz : integer range 1 to 32 := 16;
131 NbData : integer range 1 to 512 := 256
132 NbData : integer range 1 to 512 := 256
132 );
133 );
133 port(
134 port(
134 clk : in std_logic;
135 clk : in std_logic;
135 rstn : in std_logic;
136 rstn : in std_logic;
136 Load : in std_logic;
137 Load : in std_logic;
137 Empty : in std_logic;
138 Empty : in std_logic;
138 DATA : in std_logic_vector(Data_sz-1 downto 0);
139 DATA : in std_logic_vector(Data_sz-1 downto 0);
139 Valid : out std_logic;
140 Valid : out std_logic;
140 Read : out std_logic;
141 Read : out std_logic;
141 Data_re : out std_logic_vector(Data_sz-1 downto 0);
142 Data_re : out std_logic_vector(Data_sz-1 downto 0);
142 Data_im : out std_logic_vector(Data_sz-1 downto 0)
143 Data_im : out std_logic_vector(Data_sz-1 downto 0)
143 );
144 );
144 end component;
145 end component;
145
146
146 component FFTaval is
147 component FFTaval is
147 generic(
148 generic(
148 Data_sz : integer range 1 to 32 := 8;
149 Data_sz : integer range 1 to 32 := 8;
149 NbData : integer range 1 to 512 := 256
150 NbData : integer range 1 to 512 := 256
150 );
151 );
151 port(
152 port(
152 clk : in std_logic;
153 clk : in std_logic;
153 rstn : in std_logic;
154 rstn : in std_logic;
154 Ready : in std_logic;
155 Ready : in std_logic;
155 Valid : in std_logic;
156 Valid : in std_logic;
156 Full : in std_logic;
157 Full : in std_logic;
157 Data_re : in std_logic_vector(Data_sz-1 downto 0);
158 Data_re : in std_logic_vector(Data_sz-1 downto 0);
158 Data_im : in std_logic_vector(Data_sz-1 downto 0);
159 Data_im : in std_logic_vector(Data_sz-1 downto 0);
159 Read : out std_logic;
160 Read : out std_logic;
160 Write : out std_logic;
161 Write : out std_logic;
161 ReUse : out std_logic;
162 ReUse : out std_logic;
162 DATA : out std_logic_vector(Data_sz-1 downto 0)
163 DATA : out std_logic_vector(Data_sz-1 downto 0)
163 );
164 );
164 end component;
165 end component;
165 --==============================================================|
166 --==============================================================|
166 --================== IP VHDL de la FFT actel ===================|
167 --================== IP VHDL de la FFT actel ===================|
167 --================ non partagοΏ½ dans la VHD_Lib =================|
168 --================ non partagοΏ½ dans la VHD_Lib =================|
168 --==============================================================|
169 --==============================================================|
169
170
170 component CoreFFT IS
171 component CoreFFT IS
171 GENERIC (
172 GENERIC (
172 LOGPTS : integer := gLOGPTS;
173 LOGPTS : integer := gLOGPTS;
173 LOGLOGPTS : integer := gLOGLOGPTS;
174 LOGLOGPTS : integer := gLOGLOGPTS;
174 WSIZE : integer := gWSIZE;
175 WSIZE : integer := gWSIZE;
175 TWIDTH : integer := gTWIDTH;
176 TWIDTH : integer := gTWIDTH;
176 DWIDTH : integer := gDWIDTH;
177 DWIDTH : integer := gDWIDTH;
177 TDWIDTH : integer := gTDWIDTH;
178 TDWIDTH : integer := gTDWIDTH;
178 RND_MODE : integer := gRND_MODE;
179 RND_MODE : integer := gRND_MODE;
179 SCALE_MODE : integer := gSCALE_MODE;
180 SCALE_MODE : integer := gSCALE_MODE;
180 PTS : integer := gPTS;
181 PTS : integer := gPTS;
181 HALFPTS : integer := gHALFPTS;
182 HALFPTS : integer := gHALFPTS;
182 inBuf_RWDLY : integer := gInBuf_RWDLY );
183 inBuf_RWDLY : integer := gInBuf_RWDLY );
183 PORT (
184 PORT (
184 clk,ifiStart,ifiNreset : IN std_logic;
185 clk,ifiStart,ifiNreset : IN std_logic;
185 ifiD_valid, ifiRead_y : IN std_logic;
186 ifiD_valid, ifiRead_y : IN std_logic;
186 ifiD_im, ifiD_re : IN std_logic_vector(WSIZE-1 DOWNTO 0);
187 ifiD_im, ifiD_re : IN std_logic_vector(WSIZE-1 DOWNTO 0);
187 ifoLoad, ifoPong : OUT std_logic;
188 ifoLoad, ifoPong : OUT std_logic;
188 ifoY_im, ifoY_re : OUT std_logic_vector(WSIZE-1 DOWNTO 0);
189 ifoY_im, ifoY_re : OUT std_logic_vector(WSIZE-1 DOWNTO 0);
189 ifoY_valid, ifoY_rdy : OUT std_logic);
190 ifoY_valid, ifoY_rdy : OUT std_logic);
190 END component;
191 END component;
191
192
192
193
193 component actar is
194 component actar is
194 port( DataA : in std_logic_vector(15 downto 0); DataB : in
195 port( DataA : in std_logic_vector(15 downto 0); DataB : in
195 std_logic_vector(15 downto 0); Mult : out
196 std_logic_vector(15 downto 0); Mult : out
196 std_logic_vector(31 downto 0);Clock : in std_logic) ;
197 std_logic_vector(31 downto 0);Clock : in std_logic) ;
197 end component;
198 end component;
198
199
199 component actram is
200 component actram is
200 port( DI : in std_logic_vector(31 downto 0); DO : out
201 port( DI : in std_logic_vector(31 downto 0); DO : out
201 std_logic_vector(31 downto 0);WRB, RDB : in std_logic;
202 std_logic_vector(31 downto 0);WRB, RDB : in std_logic;
202 WADDR : in std_logic_vector(6 downto 0); RADDR : in
203 WADDR : in std_logic_vector(6 downto 0); RADDR : in
203 std_logic_vector(6 downto 0);WCLOCK, RCLOCK : in
204 std_logic_vector(6 downto 0);WCLOCK, RCLOCK : in
204 std_logic) ;
205 std_logic) ;
205 end component;
206 end component;
206
207
207 component switch IS
208 component switch IS
208 GENERIC ( DWIDTH : integer := 32 );
209 GENERIC ( DWIDTH : integer := 32 );
209 PORT (
210 PORT (
210 clk, sel, validIn : IN std_logic;
211 clk, sel, validIn : IN std_logic;
211 inP, inQ : IN std_logic_vector(DWIDTH-1 DOWNTO 0);
212 inP, inQ : IN std_logic_vector(DWIDTH-1 DOWNTO 0);
212 outP, outQ : OUT std_logic_vector(DWIDTH-1 DOWNTO 0);
213 outP, outQ : OUT std_logic_vector(DWIDTH-1 DOWNTO 0);
213 validOut : OUT std_logic);
214 validOut : OUT std_logic);
214 END component;
215 END component;
215
216
216 component twid_rA IS
217 component twid_rA IS
217 GENERIC (LOGPTS : integer := 8;
218 GENERIC (LOGPTS : integer := 8;
218 LOGLOGPTS : integer := 3 );
219 LOGLOGPTS : integer := 3 );
219 PORT (clk : IN std_logic;
220 PORT (clk : IN std_logic;
220 timer : IN std_logic_vector(LOGPTS-2 DOWNTO 0);
221 timer : IN std_logic_vector(LOGPTS-2 DOWNTO 0);
221 stage : IN std_logic_vector(LOGLOGPTS-1 DOWNTO 0);
222 stage : IN std_logic_vector(LOGLOGPTS-1 DOWNTO 0);
222 tA : OUT std_logic_vector(LOGPTS-2 DOWNTO 0));
223 tA : OUT std_logic_vector(LOGPTS-2 DOWNTO 0));
223 END component;
224 END component;
224
225
225 component counter IS
226 component counter IS
226 GENERIC (
227 GENERIC (
227 WIDTH : integer := 7;
228 WIDTH : integer := 7;
228 TERMCOUNT : integer := 127 );
229 TERMCOUNT : integer := 127 );
229 PORT (
230 PORT (
230 clk, nGrst, rst, cntEn : IN std_logic;
231 clk, nGrst, rst, cntEn : IN std_logic;
231 tc : OUT std_logic;
232 tc : OUT std_logic;
232 Q : OUT std_logic_vector(WIDTH-1 DOWNTO 0) );
233 Q : OUT std_logic_vector(WIDTH-1 DOWNTO 0) );
233 END component;
234 END component;
234
235
235
236
236 component twiddle IS
237 component twiddle IS
237 PORT (
238 PORT (
238 A : IN std_logic_vector(gLOGPTS-2 DOWNTO 0);
239 A : IN std_logic_vector(gLOGPTS-2 DOWNTO 0);
239 T : OUT std_logic_vector(gTDWIDTH-1 DOWNTO 0));
240 T : OUT std_logic_vector(gTDWIDTH-1 DOWNTO 0));
240 END component;
241 END component;
241
242
242
243
243 end; No newline at end of file
244 end;
@@ -1,638 +1,638
1 -----------------------------------------------------------------------------
1 -----------------------------------------------------------------------------
2 -- LEON3 Demonstration design
2 -- LEON3 Demonstration design
3 -- Copyright (C) 2004 Jiri Gaisler, Gaisler Research
3 -- Copyright (C) 2004 Jiri Gaisler, Gaisler Research
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 ------------------------------------------------------------------------------
18 ------------------------------------------------------------------------------
19
19
20
20
21 library ieee;
21 library ieee;
22 use ieee.std_logic_1164.all;
22 use ieee.std_logic_1164.all;
23 library grlib;
23 library grlib;
24 use grlib.amba.all;
24 use grlib.amba.all;
25 use grlib.stdlib.all;
25 use grlib.stdlib.all;
26 library techmap;
26 library techmap;
27 use techmap.gencomp.all;
27 use techmap.gencomp.all;
28 library gaisler;
28 library gaisler;
29 use gaisler.memctrl.all;
29 use gaisler.memctrl.all;
30 use gaisler.leon3.all;
30 use gaisler.leon3.all;
31 use gaisler.uart.all;
31 use gaisler.uart.all;
32 use gaisler.misc.all;
32 use gaisler.misc.all;
33 library esa;
33 library esa;
34 use esa.memoryctrl.all;
34 use esa.memoryctrl.all;
35 use work.config.all;
35 use work.config.all;
36 library lpp;
36 library lpp;
37 use lpp.lpp_amba.all;
37 use lpp.lpp_amba.all;
38 use lpp.lpp_memory.all;
38 use lpp.lpp_memory.all;
39 use lpp.lpp_uart.all;
39 use lpp.lpp_uart.all;
40 use lpp.lpp_matrix.all;
40 use lpp.lpp_matrix.all;
41 use lpp.lpp_delay.all;
41 use lpp.lpp_delay.all;
42 use lpp.lpp_fft.all;
42 use lpp.lpp_fft.all;
43 use lpp.fft_components.all;
43 use lpp.fft_components.all;
44 use lpp.lpp_ad_conv.all;
44 use lpp.lpp_ad_conv.all;
45 use lpp.iir_filter.all;
45 use lpp.iir_filter.all;
46 use lpp.general_purpose.all;
46 use lpp.general_purpose.all;
47 use lpp.Filtercfg.all;
47 use lpp.Filtercfg.all;
48
48
49 entity leon3mp is
49 entity leon3mp is
50 generic (
50 generic (
51 fabtech : integer := CFG_FABTECH;
51 fabtech : integer := CFG_FABTECH;
52 memtech : integer := CFG_MEMTECH;
52 memtech : integer := CFG_MEMTECH;
53 padtech : integer := CFG_PADTECH;
53 padtech : integer := CFG_PADTECH;
54 clktech : integer := CFG_CLKTECH;
54 clktech : integer := CFG_CLKTECH;
55 disas : integer := CFG_DISAS; -- Enable disassembly to console
55 disas : integer := CFG_DISAS; -- Enable disassembly to console
56 dbguart : integer := CFG_DUART; -- Print UART on console
56 dbguart : integer := CFG_DUART; -- Print UART on console
57 pclow : integer := CFG_PCLOW
57 pclow : integer := CFG_PCLOW
58 );
58 );
59 port (
59 port (
60 clk50MHz : in std_ulogic;
60 clk50MHz : in std_ulogic;
61 reset : in std_ulogic;
61 reset : in std_ulogic;
62 ramclk : out std_logic;
62 ramclk : out std_logic;
63
63
64 ahbrxd : in std_ulogic; -- DSU rx data
64 ahbrxd : in std_ulogic; -- DSU rx data
65 ahbtxd : out std_ulogic; -- DSU tx data
65 ahbtxd : out std_ulogic; -- DSU tx data
66 dsubre : in std_ulogic;
66 dsubre : in std_ulogic;
67 dsuact : out std_ulogic;
67 dsuact : out std_ulogic;
68 urxd1 : in std_ulogic; -- UART1 rx data
68 urxd1 : in std_ulogic; -- UART1 rx data
69 utxd1 : out std_ulogic; -- UART1 tx data
69 utxd1 : out std_ulogic; -- UART1 tx data
70 errorn : out std_ulogic;
70 errorn : out std_ulogic;
71
71
72 address : out std_logic_vector(18 downto 0);
72 address : out std_logic_vector(18 downto 0);
73 data : inout std_logic_vector(31 downto 0);
73 data : inout std_logic_vector(31 downto 0);
74 gpio : inout std_logic_vector(6 downto 0); -- I/O port
74 gpio : inout std_logic_vector(6 downto 0); -- I/O port
75
75
76 nBWa : out std_logic;
76 nBWa : out std_logic;
77 nBWb : out std_logic;
77 nBWb : out std_logic;
78 nBWc : out std_logic;
78 nBWc : out std_logic;
79 nBWd : out std_logic;
79 nBWd : out std_logic;
80 nBWE : out std_logic;
80 nBWE : out std_logic;
81 nADSC : out std_logic;
81 nADSC : out std_logic;
82 nADSP : out std_logic;
82 nADSP : out std_logic;
83 nADV : out std_logic;
83 nADV : out std_logic;
84 nGW : out std_logic;
84 nGW : out std_logic;
85 nCE1 : out std_logic;
85 nCE1 : out std_logic;
86 CE2 : out std_logic;
86 CE2 : out std_logic;
87 nCE3 : out std_logic;
87 nCE3 : out std_logic;
88 nOE : out std_logic;
88 nOE : out std_logic;
89 MODE : out std_logic;
89 MODE : out std_logic;
90 SSRAM_CLK : out std_logic;
90 SSRAM_CLK : out std_logic;
91 ZZ : out std_logic;
91 ZZ : out std_logic;
92 ---------------------------------------------------------------------
92 ---------------------------------------------------------------------
93 --- AJOUT TEST ------------------------In/Out-----------------------
93 --- AJOUT TEST ------------------------In/Out-----------------------
94 ---------------------------------------------------------------------
94 ---------------------------------------------------------------------
95 -- UART
95 -- UART
96 UART_RXD : in std_logic;
96 UART_RXD : in std_logic;
97 UART_TXD : out std_logic;
97 UART_TXD : out std_logic;
98 -- ADC
98 -- ADC
99 -- ADC_in : in AD7688_in(4 downto 0);
99 -- ADC_in : in AD7688_in(4 downto 0);
100 -- ADC_out : out AD7688_out;
100 -- ADC_out : out AD7688_out;
101 -- Bias_Fails : out std_logic;
101 -- Bias_Fails : out std_logic;
102 -- CNA
102 -- CNA
103 -- DAC_SYNC : out std_logic;
103 -- DAC_SYNC : out std_logic;
104 -- DAC_SCLK : out std_logic;
104 -- DAC_SCLK : out std_logic;
105 -- DAC_DATA : out std_logic;
105 -- DAC_DATA : out std_logic;
106 -- Diver
106 -- Diver
107 SPW1_EN : out std_logic;
107 SPW1_EN : out std_logic;
108 SPW2_EN : out std_logic;
108 SPW2_EN : out std_logic;
109 TEST : out std_logic_vector(3 downto 0);
109 TEST : out std_logic_vector(3 downto 0);
110
110
111 BP : in std_logic;
111 BP : in std_logic;
112 ---------------------------------------------------------------------
112 ---------------------------------------------------------------------
113 led : out std_logic_vector(1 downto 0)
113 led : out std_logic_vector(1 downto 0)
114 );
114 );
115 end;
115 end;
116
116
117 architecture Behavioral of leon3mp is
117 architecture Behavioral of leon3mp is
118
118
119 constant maxahbmsp : integer := CFG_NCPU+CFG_AHB_UART+
119 constant maxahbmsp : integer := CFG_NCPU+CFG_AHB_UART+
120 CFG_GRETH+CFG_AHB_JTAG;
120 CFG_GRETH+CFG_AHB_JTAG;
121 constant maxahbm : integer := maxahbmsp;
121 constant maxahbm : integer := maxahbmsp;
122
122
123 --Clk & Rst gοΏ½nοΏ½
123 --Clk & Rst gοΏ½nοΏ½
124 signal vcc : std_logic_vector(4 downto 0);
124 signal vcc : std_logic_vector(4 downto 0);
125 signal gnd : std_logic_vector(4 downto 0);
125 signal gnd : std_logic_vector(4 downto 0);
126 signal resetnl : std_ulogic;
126 signal resetnl : std_ulogic;
127 signal clk2x : std_ulogic;
127 signal clk2x : std_ulogic;
128 signal lclk : std_ulogic;
128 signal lclk : std_ulogic;
129 signal lclk2x : std_ulogic;
129 signal lclk2x : std_ulogic;
130 signal clkm : std_ulogic;
130 signal clkm : std_ulogic;
131 signal rstn : std_ulogic;
131 signal rstn : std_ulogic;
132 signal rstraw : std_ulogic;
132 signal rstraw : std_ulogic;
133 signal pciclk : std_ulogic;
133 signal pciclk : std_ulogic;
134 signal sdclkl : std_ulogic;
134 signal sdclkl : std_ulogic;
135 signal cgi : clkgen_in_type;
135 signal cgi : clkgen_in_type;
136 signal cgo : clkgen_out_type;
136 signal cgo : clkgen_out_type;
137 --- AHB / APB
137 --- AHB / APB
138 signal apbi : apb_slv_in_type;
138 signal apbi : apb_slv_in_type;
139 signal apbo : apb_slv_out_vector := (others => apb_none);
139 signal apbo : apb_slv_out_vector := (others => apb_none);
140 signal ahbsi : ahb_slv_in_type;
140 signal ahbsi : ahb_slv_in_type;
141 signal ahbso : ahb_slv_out_vector := (others => ahbs_none);
141 signal ahbso : ahb_slv_out_vector := (others => ahbs_none);
142 signal ahbmi : ahb_mst_in_type;
142 signal ahbmi : ahb_mst_in_type;
143 signal ahbmo : ahb_mst_out_vector := (others => ahbm_none);
143 signal ahbmo : ahb_mst_out_vector := (others => ahbm_none);
144 --UART
144 --UART
145 signal ahbuarti : uart_in_type;
145 signal ahbuarti : uart_in_type;
146 signal ahbuarto : uart_out_type;
146 signal ahbuarto : uart_out_type;
147 signal apbuarti : uart_in_type;
147 signal apbuarti : uart_in_type;
148 signal apbuarto : uart_out_type;
148 signal apbuarto : uart_out_type;
149 --MEM CTRLR
149 --MEM CTRLR
150 signal memi : memory_in_type;
150 signal memi : memory_in_type;
151 signal memo : memory_out_type;
151 signal memo : memory_out_type;
152 signal wpo : wprot_out_type;
152 signal wpo : wprot_out_type;
153 signal sdo : sdram_out_type;
153 signal sdo : sdram_out_type;
154 --IRQ
154 --IRQ
155 signal irqi : irq_in_vector(0 to CFG_NCPU-1);
155 signal irqi : irq_in_vector(0 to CFG_NCPU-1);
156 signal irqo : irq_out_vector(0 to CFG_NCPU-1);
156 signal irqo : irq_out_vector(0 to CFG_NCPU-1);
157 --Timer
157 --Timer
158 signal gpti : gptimer_in_type;
158 signal gpti : gptimer_in_type;
159 signal gpto : gptimer_out_type;
159 signal gpto : gptimer_out_type;
160 --GPIO
160 --GPIO
161 signal gpioi : gpio_in_type;
161 signal gpioi : gpio_in_type;
162 signal gpioo : gpio_out_type;
162 signal gpioo : gpio_out_type;
163 --DSU
163 --DSU
164 signal dbgi : l3_debug_in_vector(0 to CFG_NCPU-1);
164 signal dbgi : l3_debug_in_vector(0 to CFG_NCPU-1);
165 signal dbgo : l3_debug_out_vector(0 to CFG_NCPU-1);
165 signal dbgo : l3_debug_out_vector(0 to CFG_NCPU-1);
166 signal dsui : dsu_in_type;
166 signal dsui : dsu_in_type;
167 signal dsuo : dsu_out_type;
167 signal dsuo : dsu_out_type;
168
168
169 ---------------------------------------------------------------------
169 ---------------------------------------------------------------------
170 --- AJOUT TEST ------------------------Signaux----------------------
170 --- AJOUT TEST ------------------------Signaux----------------------
171 ---------------------------------------------------------------------
171 ---------------------------------------------------------------------
172 -- FIFOs
172 -- FIFOs
173 signal FifoIN_Full : std_logic_vector(0 downto 0);--
173 signal FifoIN_Full : std_logic_vector(4 downto 0);--
174 signal FifoIN_Empty : std_logic_vector(0 downto 0);--
174 signal FifoIN_Empty : std_logic_vector(4 downto 0);--
175 signal FifoIN_Data : std_logic_vector(15 downto 0);--
175 signal FifoIN_Data : std_logic_vector(79 downto 0);--
176
176
177 signal FifoINT_Full : std_logic_vector(4 downto 0);
177 signal FifoINT_Full : std_logic_vector(4 downto 0);
178 signal FifoINT_Data : std_logic_vector(79 downto 0);
178 signal FifoINT_Data : std_logic_vector(79 downto 0);
179
179
180 signal FifoOUT_FullV : std_logic;
180 signal FifoOUT_FullV : std_logic;
181 signal FifoOUT_Full : std_logic_vector(0 downto 0);--
181 signal FifoOUT_Full : std_logic_vector(4 downto 0);--
182 signal Matrix_WriteV : std_logic_vector(0 downto 0);
182 signal Matrix_WriteV : std_logic_vector(0 downto 0);
183
183
184 -- MATRICE SPECTRALE
184 -- MATRICE SPECTRALE
185 signal Matrix_Write : std_logic;
185 signal Matrix_Write : std_logic;
186 signal Matrix_Read : std_logic_vector(1 downto 0);
186 signal Matrix_Read : std_logic_vector(1 downto 0);
187 signal Matrix_Result : std_logic_vector(31 downto 0);
187 signal Matrix_Result : std_logic_vector(31 downto 0);
188
188
189 signal TopSM_Start : std_logic;
189 signal TopSM_Start : std_logic;
190 signal TopSM_Statu : std_logic_vector(3 downto 0);
190 signal TopSM_Statu : std_logic_vector(3 downto 0);
191 signal TopSM_Read : std_logic_vector(4 downto 0);
191 signal TopSM_Read : std_logic_vector(4 downto 0);
192 signal TopSM_Data1 : std_logic_vector(15 downto 0);
192 signal TopSM_Data1 : std_logic_vector(15 downto 0);
193 signal TopSM_Data2 : std_logic_vector(15 downto 0);
193 signal TopSM_Data2 : std_logic_vector(15 downto 0);
194
194
195 signal Disp_FlagError : std_logic;
195 signal Disp_FlagError : std_logic;
196 signal Disp_Pong : std_logic;
196 signal Disp_Pong : std_logic;
197 signal Disp_Write : std_logic_vector(1 downto 0);
197 signal Disp_Write : std_logic_vector(1 downto 0);
198 signal Disp_Data : std_logic_vector(63 downto 0);
198 signal Disp_Data : std_logic_vector(63 downto 0);
199 signal Dma_acq : std_logic;
199 signal Dma_acq : std_logic;
200
200
201 -- FFT
201 -- FFT
202 signal Drive_Write : std_logic;
202 signal Drive_Write : std_logic;
203 signal Drive_Read : std_logic_vector(0 downto 0);--
203 signal Drive_Read : std_logic_vector(4 downto 0);--
204 signal Drive_DataRE : std_logic_vector(15 downto 0);
204 signal Drive_DataRE : std_logic_vector(15 downto 0);
205 signal Drive_DataIM : std_logic_vector(15 downto 0);
205 signal Drive_DataIM : std_logic_vector(15 downto 0);
206
206
207 signal Start : std_logic;
207 signal Start : std_logic;
208 signal RstnFFT : std_logic;
208 signal RstnFFT : std_logic;
209 signal FFT_Load : std_logic;
209 signal FFT_Load : std_logic;
210 signal FFT_Ready : std_logic;
210 signal FFT_Ready : std_logic;
211 signal FFT_Valid : std_logic;
211 signal FFT_Valid : std_logic;
212 signal FFT_DataRE : std_logic_vector(15 downto 0);
212 signal FFT_DataRE : std_logic_vector(15 downto 0);
213 signal FFT_DataIM : std_logic_vector(15 downto 0);
213 signal FFT_DataIM : std_logic_vector(15 downto 0);
214
214
215 signal Link_Read : std_logic;
215 signal Link_Read : std_logic;
216 signal Link_Write : std_logic_vector(0 downto 0);--
216 signal Link_Write : std_logic_vector(4 downto 0);--
217 signal Link_ReUse : std_logic_vector(0 downto 0);--
217 signal Link_ReUse : std_logic_vector(4 downto 0);--
218 signal Link_Data : std_logic_vector(15 downto 0);--
218 signal Link_Data : std_logic_vector(79 downto 0);--
219
219
220 -- ADC
220 -- ADC
221 signal SmplClk : std_logic;
221 signal SmplClk : std_logic;
222 signal ADC_DataReady : std_logic;
222 signal ADC_DataReady : std_logic;
223 signal ADC_SmplOut : Samples_out(4 downto 0);
223 signal ADC_SmplOut : Samples_out(4 downto 0);
224 signal enableADC : std_logic;
224 signal enableADC : std_logic;
225
225
226 signal WG_Write : std_logic_vector(4 downto 0);
226 signal WG_Write : std_logic_vector(4 downto 0);
227 signal WG_ReUse : std_logic_vector(4 downto 0);
227 signal WG_ReUse : std_logic_vector(4 downto 0);
228 signal WG_DATA : std_logic_vector(79 downto 0);
228 signal WG_DATA : std_logic_vector(79 downto 0);
229 signal s_out : std_logic_vector(79 downto 0);
229 signal s_out : std_logic_vector(79 downto 0);
230
230
231 signal fuller : std_logic_vector(4 downto 0);
231 signal fuller : std_logic_vector(4 downto 0);
232 signal reader : std_logic_vector(4 downto 0);
232 signal reader : std_logic_vector(4 downto 0);
233 signal try : std_logic_vector(1 downto 0);
233 signal try : std_logic_vector(1 downto 0);
234 signal TXDint : std_logic;
234 signal TXDint : std_logic;
235
235
236 -- IIR Filter
236 -- IIR Filter
237 signal sample_clk_out : std_logic;
237 signal sample_clk_out : std_logic;
238
238
239 signal Rd : std_logic_vector(0 downto 0);--
239 signal Rd : std_logic_vector(0 downto 0);--
240 signal Ept : std_logic_vector(0 downto 0);--
240 signal Ept : std_logic_vector(4 downto 0);--
241
241
242 signal Bwr : std_logic_vector(0 downto 0);
242 signal Bwr : std_logic_vector(0 downto 0);
243 signal Bre : std_logic_vector(0 downto 0);
243 signal Bre : std_logic_vector(0 downto 0);
244 signal DataTMP : std_logic_vector(15 downto 0);
244 signal DataTMP : std_logic_vector(15 downto 0);
245 signal FullUp : std_logic_vector(0 downto 0);
245 signal FullUp : std_logic_vector(0 downto 0);
246 signal EmptyUp : std_logic_vector(0 downto 0);
246 signal EmptyUp : std_logic_vector(0 downto 0);
247 signal FullDown : std_logic_vector(0 downto 0);
247 signal FullDown : std_logic_vector(0 downto 0);
248 signal EmptyDown : std_logic_vector(0 downto 0);
248 signal EmptyDown : std_logic_vector(0 downto 0);
249 ---------------------------------------------------------------------
249 ---------------------------------------------------------------------
250 constant IOAEN : integer := CFG_CAN;
250 constant IOAEN : integer := CFG_CAN;
251 constant boardfreq : integer := 50000;
251 constant boardfreq : integer := 50000;
252
252
253 begin
253 begin
254
254
255 ---------------------------------------------------------------------
255 ---------------------------------------------------------------------
256 --- AJOUT TEST -------------------------------------IPs-------------
256 --- AJOUT TEST -------------------------------------IPs-------------
257 ---------------------------------------------------------------------
257 ---------------------------------------------------------------------
258 led(1 downto 0) <= gpio(1 downto 0);
258 led(1 downto 0) <= gpio(1 downto 0);
259
259
260 --- COM USB ---------------------------------------------------------
260 --- COM USB ---------------------------------------------------------
261 -- MemIn0 : APB_FifoWrite
261 -- MemIn0 : APB_FifoWrite
262 -- generic map (5,5, Data_sz => 8, Addr_sz => 8, addr_max_int => 256)
262 -- generic map (5,5, Data_sz => 8, Addr_sz => 8, addr_max_int => 256)
263 -- port map (clkm,rstn,apbi,USB_Read,open,open,InOutData,apbo(5));
263 -- port map (clkm,rstn,apbi,USB_Read,open,open,InOutData,apbo(5));
264 --
264 --
265 -- BUF0 : APB_USB
265 -- BUF0 : APB_USB
266 -- generic map (6,6,DataMax => 1024)
266 -- generic map (6,6,DataMax => 1024)
267 -- port map(clkm,rstn,flagC,flagB,ifclk,sloe,USB_Read,USB_Write,pktend,fifoadr,InOutData,apbi,apbo(6));
267 -- port map(clkm,rstn,flagC,flagB,ifclk,sloe,USB_Read,USB_Write,pktend,fifoadr,InOutData,apbi,apbo(6));
268 --
268 --
269 -- MemOut0 : APB_FifoRead
269 -- MemOut0 : APB_FifoRead
270 -- generic map (7,7, Data_sz => 8, Addr_sz => 8, addr_max_int => 256)
270 -- generic map (7,7, Data_sz => 8, Addr_sz => 8, addr_max_int => 256)
271 -- port map (clkm,rstn,apbi,USB_Write,open,open,InOutData,apbo(7));
271 -- port map (clkm,rstn,apbi,USB_Write,open,open,InOutData,apbo(7));
272 --
272 --
273 --slrd <= usb_Read;
273 --slrd <= usb_Read;
274 --slwr <= usb_Write;
274 --slwr <= usb_Write;
275
275
276 --- CNA -------------------------------------------------------------
276 --- CNA -------------------------------------------------------------
277
277
278 -- CONV : APB_CNA
278 -- CONV : APB_CNA
279 -- generic map (5,5)
279 -- generic map (5,5)
280 -- port map(clkm,rstn,apbi,apbo(5),DAC_SYNC,DAC_SCLK,DAC_DATA);
280 -- port map(clkm,rstn,apbi,apbo(5),DAC_SYNC,DAC_SCLK,DAC_DATA);
281
281
282 --TEST(0) <= SmplClk;
282 --TEST(0) <= SmplClk;
283 --TEST(1) <= WG_Write(0);
283 --TEST(1) <= WG_Write(0);
284 --TEST(2) <= Fuller(0);
284 --TEST(2) <= Fuller(0);
285 --TEST(3) <= s_out(s_out'length-1);
285 --TEST(3) <= s_out(s_out'length-1);
286
286
287
287
288 SPW1_EN <= '1';
288 SPW1_EN <= '1';
289 SPW2_EN <= '0';
289 SPW2_EN <= '0';
290
290
291 --- CAN -------------------------------------------------------------
291 --- CAN -------------------------------------------------------------
292
292
293 -- Divider : Clk_divider
293 -- Divider : Clk_divider
294 -- generic map(OSC_freqHz => 24_576_000, TargetFreq_Hz => 24_576)
294 -- generic map(OSC_freqHz => 24_576_000, TargetFreq_Hz => 24_576)
295 -- Port map(clkm,rstn,SmplClk);
295 -- Port map(clkm,rstn,SmplClk);
296 --
296 --
297 -- ADC : AD7688_drvr
297 -- ADC : AD7688_drvr
298 -- generic map (ChanelCount => 5, clkkHz => 24_576)
298 -- generic map (ChanelCount => 5, clkkHz => 24_576)
299 -- port map (clkm,rstn,enableADC,SmplClk,ADC_DataReady,ADC_SmplOut,ADC_in,ADC_out);
299 -- port map (clkm,rstn,enableADC,SmplClk,ADC_DataReady,ADC_SmplOut,ADC_in,ADC_out);
300 --
300 --
301 -- WG : WriteGen_ADC
301 -- WG : WriteGen_ADC
302 -- port map (clkm,rstn,SmplClk,ADC_DataReady,Fuller,WG_ReUse,WG_Write);
302 -- port map (clkm,rstn,SmplClk,ADC_DataReady,Fuller,WG_ReUse,WG_Write);
303 --
303 --
304 --enableADC <= gpio(0);
304 --enableADC <= gpio(0);
305 --Bias_Fails <= '0';
305 --Bias_Fails <= '0';
306 --WG_DATA <= ADC_SmplOut(4) & ADC_SmplOut(3) & ADC_SmplOut(2) & ADC_SmplOut(1) & ADC_SmplOut(0);
306 --WG_DATA <= ADC_SmplOut(4) & ADC_SmplOut(3) & ADC_SmplOut(2) & ADC_SmplOut(1) & ADC_SmplOut(0);
307 --
307 --
308 --
308 --
309 -- MemIn1 : APB_FIFO
309 -- MemIn1 : APB_FIFO
310 -- generic map (pindex => 6, paddr => 6, FifoCnt => 5, Data_sz => 16, Addr_sz => 8, Enable_ReUse => '0', R => 1, W => 0)
310 -- generic map (pindex => 6, paddr => 6, FifoCnt => 5, Data_sz => 16, Addr_sz => 8, Enable_ReUse => '0', R => 1, W => 0)
311 -- port map (clkm,rstn,clkm,clkm,WG_ReUse,(others => '1'),WG_Write,open,Fuller,open,WG_DATA,open,open,apbi,apbo(6));
311 -- port map (clkm,rstn,clkm,clkm,WG_ReUse,(others => '1'),WG_Write,open,Fuller,open,WG_DATA,open,open,apbi,apbo(6));
312
312
313 --- FFT -------------------------------------------------------------
313 --- FFT -------------------------------------------------------------
314
314
315 MemIn : APB_FIFO
315 MemIn : APB_FIFO
316 generic map (pindex => 8, paddr => 8, FifoCnt => 1, Data_sz => 16, Addr_sz => 8, Enable_ReUse => '1', R => 0, W => 1)
316 generic map (pindex => 8, paddr => 8, FifoCnt => 5, Data_sz => 16, Addr_sz => 8, Enable_ReUse => '0', R => 0, W => 1)
317 port map (clkm,rstn,clkm,clkm,(others => '0'),Drive_Read,(others => '1'),FifoIN_Empty,FifoIN_Full,FifoIN_Data,(others => '0'),open,open,apbi,apbo(8));
317 port map (clkm,rstn,clkm,clkm,(others => '0'),Drive_Read,(others => '1'),FifoIN_Empty,FifoIN_Full,FifoIN_Data,(others => '0'),open,open,apbi,apbo(8));
318 -- MemIn : APB_FIFO
318 -- MemIn : APB_FIFO
319 -- generic map (pindex => 8, paddr => 8, FifoCnt => 1, Data_sz => 16, Addr_sz => 8, Enable_ReUse => '0', R => 0, W => 1)
319 -- generic map (pindex => 8, paddr => 8, FifoCnt => 1, Data_sz => 16, Addr_sz => 8, Enable_ReUse => '0', R => 0, W => 1)
320 -- port map (clkm,rstn,clkm,clkm,(others => '0'),Drive_Read,(others =>'1'),FifoIN_Empty,FifoIN_Full,FifoIN_Data,(others => '0'),open,open,apbi,apbo(8));
320 -- port map (clkm,rstn,clkm,clkm,(others => '0'),Drive_Read,(others =>'1'),FifoIN_Empty,FifoIN_Full,FifoIN_Data,(others => '0'),open,open,apbi,apbo(8));
321 --
321 --
322
322
323 Start <= '0';
323 Start <= '0';
324
324
325 DRIVE : FFTamont
325 -- DRIVE : FFTamont
326 generic map(Data_sz => 16,NbData => 256)
326 -- generic map(Data_sz => 16,NbData => 256)
327 port map(clkm,rstn,FFT_Load,FifoIN_Empty(0),FifoIN_Data,Drive_Write,Drive_Read(0),Drive_DataRE,Drive_DataIM);
327 -- port map(clkm,rstn,FFT_Load,FifoIN_Empty(0),FifoIN_Data,Drive_Write,Drive_Read(0),Drive_DataRE,Drive_DataIM);
328 -- DRIVE : Driver_FFT
328 DRIVE : Driver_FFT
329 -- generic map(Data_sz => 16)
329 generic map(Data_sz => 16)
330 -- port map(clkm,rstn,FFT_Load,FifoIN_Empty,FifoIN_Full,FifoIN_Data,Drive_Write,Drive_Read,Drive_DataRE,Drive_DataIM);
330 port map(clkm,rstn,FFT_Load,FifoIN_Empty,FifoIN_Data,Drive_Write,Drive_Read,Drive_DataRE,Drive_DataIM);
331 --
331 --
332 FFT : CoreFFT
332 FFT : CoreFFT
333 generic map(
333 generic map(
334 LOGPTS => gLOGPTS,
334 LOGPTS => gLOGPTS,
335 LOGLOGPTS => gLOGLOGPTS,
335 LOGLOGPTS => gLOGLOGPTS,
336 WSIZE => gWSIZE,
336 WSIZE => gWSIZE,
337 TWIDTH => gTWIDTH,
337 TWIDTH => gTWIDTH,
338 DWIDTH => gDWIDTH,
338 DWIDTH => gDWIDTH,
339 TDWIDTH => gTDWIDTH,
339 TDWIDTH => gTDWIDTH,
340 RND_MODE => gRND_MODE,
340 RND_MODE => gRND_MODE,
341 SCALE_MODE => gSCALE_MODE,
341 SCALE_MODE => gSCALE_MODE,
342 PTS => gPTS,
342 PTS => gPTS,
343 HALFPTS => gHALFPTS,
343 HALFPTS => gHALFPTS,
344 inBuf_RWDLY => gInBuf_RWDLY)
344 inBuf_RWDLY => gInBuf_RWDLY)
345 port map(clkm,start,rstn,Drive_Write,Link_Read,Drive_DataIM,Drive_DataRE,FFT_Load,open,FFT_DataIM,FFT_DataRE,FFT_Valid,FFT_Ready);
345 port map(clkm,start,rstn,Drive_Write,Link_Read,Drive_DataIM,Drive_DataRE,FFT_Load,open,FFT_DataIM,FFT_DataRE,FFT_Valid,FFT_Ready);
346 --
346 --
347 -- LINK : Linker_FFT
347 LINK : Linker_FFT
348 -- generic map(Data_sz => 16)
348 generic map(Data_sz => 16)
349 -- port map(clkm,rstn,FFT_Ready,FFT_Valid,FifoOUT_Full,FFT_DataRE,FFT_DataIM,Link_Read,Link_Write,Link_ReUse,Link_Data);--FifoOUT_Full/FifoINT_Full
349 port map(clkm,rstn,FFT_Ready,FFT_Valid,FifoOUT_Full,FFT_DataRE,FFT_DataIM,Link_Read,Link_Write,Link_ReUse,Link_Data);--FifoOUT_Full/FifoINT_Full
350 LINK : FFTaval
350 -- LINK : FFTaval
351 generic map(Data_sz => 16,NbData => 256)
351 -- generic map(Data_sz => 16,NbData => 256)
352 port map(clkm,rstn,FFT_Ready,FFT_Valid,FifoOUT_Full(0),FFT_DataRE,FFT_DataIM,Link_Read,Link_Write(0),Link_ReUse(0),Link_Data);
352 -- port map(clkm,rstn,FFT_Ready,FFT_Valid,FifoOUT_Full(0),FFT_DataRE,FFT_DataIM,Link_Read,Link_Write(0),Link_ReUse(0),Link_Data);
353 --
353 --
354 ----- MATRICE SPECTRALE ---------------------5 FIFO Input---------------
354 ----- MATRICE SPECTRALE ---------------------5 FIFO Input---------------
355 --
355 --
356 MemOut : APB_FIFO
356 MemOut : APB_FIFO
357 generic map (pindex => 9, paddr => 9, FifoCnt => 1, Data_sz => 16, Addr_sz => 8, Enable_ReUse => '0', R => 1, W => 0)
357 generic map (pindex => 9, paddr => 9, FifoCnt => 5, Data_sz => 16, Addr_sz => 8, Enable_ReUse => '1', R => 1, W => 0)
358 port map (clkm,rstn,clkm,clkm,Link_ReUse,(others =>'1'),Link_Write,Ept,FifoOUT_Full,open,Link_Data,open,open,apbi,apbo(9));
358 port map (clkm,rstn,clkm,clkm,Link_ReUse,(others =>'1'),Link_Write,Ept,FifoOUT_Full,open,Link_Data,open,open,apbi,apbo(9));
359
359
360
360
361 --TEST(0) <= FifoOUT_Full(0);
361 --TEST(0) <= FifoOUT_Full(0);
362 --TEST(1) <= Link_Write(0);
362 --TEST(1) <= Link_Write(0);
363
363
364 -- MemInt : lppFIFOx5
364 -- MemInt : lppFIFOx5
365 -- generic map(Data_sz => 16, Enable_ReUse => '1')
365 -- generic map(Data_sz => 16, Enable_ReUse => '1')
366 -- port map(rstn,clkm,clkm,Link_ReUse,Link_Write,TopSM_Read,Link_Data,FifoINT_Data,FifoINT_Full,open);
366 -- port map(rstn,clkm,clkm,Link_ReUse,Link_Write,TopSM_Read,Link_Data,FifoINT_Data,FifoINT_Full,open);
367 --
367 --
368 --Matrix_WriteV(0) <= not Matrix_Write;
368 --Matrix_WriteV(0) <= not Matrix_Write;
369 --FifoOUT_FullV <= FifoOUT_Full(0);
369 --FifoOUT_FullV <= FifoOUT_Full(0);
370 --
370 --
371 ---- MemInt : lppFIFOxN
371 ---- MemInt : lppFIFOxN
372 ---- generic map(Data_sz => 16, FifoCnt => 5, Enable_ReUse => '1')
372 ---- generic map(Data_sz => 16, FifoCnt => 5, Enable_ReUse => '1')
373 ---- port map(rstn,clkm,clkm,Link_ReUse,Link_Write,TopSM_Read,Link_Data,FifoINT_Data,FifoINT_Full,open);
373 ---- port map(rstn,clkm,clkm,Link_ReUse,Link_Write,TopSM_Read,Link_Data,FifoINT_Data,FifoINT_Full,open);
374 --
374 --
375 -- TopSM : TopMatrix_PDR
375 -- TopSM : TopMatrix_PDR
376 -- generic map (Input_SZ => 16)
376 -- generic map (Input_SZ => 16)
377 -- port map (clkm,rstn,FifoINT_Data,FifoINT_Full,Matrix_Read,Matrix_Write,TopSM_Data1,TopSM_Data2,TopSM_Start,TopSM_Read,TopSM_Statu);
377 -- port map (clkm,rstn,FifoINT_Data,FifoINT_Full,Matrix_Read,Matrix_Write,TopSM_Data1,TopSM_Data2,TopSM_Start,TopSM_Read,TopSM_Statu);
378 --
378 --
379 -- SM : SpectralMatrix
379 -- SM : SpectralMatrix
380 -- generic map (Input_SZ => 16, Result_SZ => 32)
380 -- generic map (Input_SZ => 16, Result_SZ => 32)
381 -- port map(clkm,rstn,TopSM_Start,TopSM_Data1,TopSM_Data2,TopSM_Statu,Matrix_Read,Matrix_Write,Matrix_Result);
381 -- port map(clkm,rstn,TopSM_Start,TopSM_Data1,TopSM_Data2,TopSM_Statu,Matrix_Read,Matrix_Write,Matrix_Result);
382
382
383
383
384 --***************************************TEST DEMI-FIFO********************************************************************************
384 --***************************************TEST DEMI-FIFO********************************************************************************
385 -- MemIn : APB_FIFO
385 -- MemIn : APB_FIFO
386 -- generic map (pindex => 8, paddr => 8, FifoCnt => 1, Data_sz => 16, Addr_sz => 8, Enable_ReUse => '0', R => 0, W => 1)
386 -- generic map (pindex => 8, paddr => 8, FifoCnt => 1, Data_sz => 16, Addr_sz => 8, Enable_ReUse => '0', R => 0, W => 1)
387 -- port map (clkm,rstn,clkm,clkm,(others => '0'),Bre,(others => '1'),EmptyUp,FullUp,DataTMP,(others => '0'),open,open,apbi,apbo(8));
387 -- port map (clkm,rstn,clkm,clkm,(others => '0'),Bre,(others => '1'),EmptyUp,FullUp,DataTMP,(others => '0'),open,open,apbi,apbo(8));
388 --
388 --
389 -- Pont : Bridge
389 -- Pont : Bridge
390 -- port map(clkm,rstn,EmptyUp(0),FullDown(0),Bwr(0),Bre(0));
390 -- port map(clkm,rstn,EmptyUp(0),FullDown(0),Bwr(0),Bre(0));
391 --
391 --
392 -- MemOut : APB_FIFO
392 -- MemOut : APB_FIFO
393 -- generic map (pindex => 9, paddr => 9, FifoCnt => 1, Data_sz => 16, Addr_sz => 8, Enable_ReUse => '0', R => 1, W => 0)
393 -- generic map (pindex => 9, paddr => 9, FifoCnt => 1, Data_sz => 16, Addr_sz => 8, Enable_ReUse => '0', R => 1, W => 0)
394 -- port map (clkm,rstn,clkm,clkm,(others => '0'),(others => '1'),Bwr,EmptyDown,FullDown,open,DataTMP,open,open,apbi,apbo(9));
394 -- port map (clkm,rstn,clkm,clkm,(others => '0'),(others => '1'),Bwr,EmptyDown,FullDown,open,DataTMP,open,open,apbi,apbo(9));
395 --*************************************************************************************************************************************
395 --*************************************************************************************************************************************
396
396
397
397
398
398
399
399
400
400
401
401
402
402
403
403
404
404
405
405
406
406
407 --Dma_acq <= '1';
407 --Dma_acq <= '1';
408 --
408 --
409 -- DISP : Dispatch
409 -- DISP : Dispatch
410 -- generic map(Data_SZ => 32)
410 -- generic map(Data_SZ => 32)
411 -- port map(clkm,reset,Dma_acq,Matrix_Result,Matrix_Write,FifoOUT_Full,Disp_Data,Disp_Write,Disp_Pong,Disp_FlagError);
411 -- port map(clkm,reset,Dma_acq,Matrix_Result,Matrix_Write,FifoOUT_Full,Disp_Data,Disp_Write,Disp_Pong,Disp_FlagError);
412 --
412 --
413 ----- FIFO -------------------------------------------------------------
413 ----- FIFO -------------------------------------------------------------
414 --
414 --
415 -- MemOut : APB_FIFO
415 -- MemOut : APB_FIFO
416 -- generic map (pindex => 15, paddr => 15, FifoCnt => 2, Data_sz => 32, Addr_sz => 8, Enable_ReUse => '0', R => 1, W => 0)
416 -- generic map (pindex => 15, paddr => 15, FifoCnt => 2, Data_sz => 32, Addr_sz => 8, Enable_ReUse => '0', R => 1, W => 0)
417 -- port map (clkm,rstn,clkm,clkm,(others => '0'),(others => '1'),Disp_Write,open,FifoOUT_Full,open,Disp_Data,open,open,apbi,apbo(15));
417 -- port map (clkm,rstn,clkm,clkm,(others => '0'),(others => '1'),Disp_Write,open,FifoOUT_Full,open,Disp_Data,open,open,apbi,apbo(15));
418 --
418 --
419 Memtest : APB_FIFO
419 Memtest : APB_FIFO
420 generic map (pindex => 5, paddr => 5, FifoCnt => 5, Data_sz => 16, Addr_sz => 8, Enable_ReUse => '1', R => 1, W => 1)
420 generic map (pindex => 5, paddr => 5, FifoCnt => 5, Data_sz => 16, Addr_sz => 8, Enable_ReUse => '1', R => 1, W => 1)
421 port map (clkm,rstn,clkm,clkm,(others => '0'),(others => '1'),(others => '1'),open,open,open,(others => '0'),open,open,apbi,apbo(5));
421 port map (clkm,rstn,clkm,clkm,(others => '0'),(others => '1'),(others => '1'),open,open,open,(others => '0'),open,open,apbi,apbo(5));
422
422
423 --- UART -------------------------------------------------------------
423 --- UART -------------------------------------------------------------
424
424
425 COM0 : APB_UART
425 COM0 : APB_UART
426 generic map (pindex => 4, paddr => 4)
426 generic map (pindex => 4, paddr => 4)
427 port map (clkm,rstn,apbi,apbo(4),UART_TXD,UART_RXD);
427 port map (clkm,rstn,apbi,apbo(4),UART_TXD,UART_RXD);
428
428
429 --- DELAY ------------------------------------------------------------
429 --- DELAY ------------------------------------------------------------
430
430
431 -- Delay0 : APB_Delay
431 -- Delay0 : APB_Delay
432 -- generic map (pindex => 4, paddr => 4)
432 -- generic map (pindex => 4, paddr => 4)
433 -- port map (clkm,rstn,apbi,apbo(4));
433 -- port map (clkm,rstn,apbi,apbo(4));
434
434
435 --- IIR Filter -------------------------------------------------------
435 --- IIR Filter -------------------------------------------------------
436 --Test(0) <= sample_clk_out;
436 --Test(0) <= sample_clk_out;
437 --
437 --
438 --
438 --
439 -- IIR1: APB_IIR_Filter
439 -- IIR1: APB_IIR_Filter
440 -- generic map(
440 -- generic map(
441 -- tech => CFG_MEMTECH,
441 -- tech => CFG_MEMTECH,
442 -- pindex => 8,
442 -- pindex => 8,
443 -- paddr => 8,
443 -- paddr => 8,
444 -- Sample_SZ => Sample_SZ,
444 -- Sample_SZ => Sample_SZ,
445 -- ChanelsCount => ChanelsCount,
445 -- ChanelsCount => ChanelsCount,
446 -- Coef_SZ => Coef_SZ,
446 -- Coef_SZ => Coef_SZ,
447 -- CoefCntPerCel => CoefCntPerCel,
447 -- CoefCntPerCel => CoefCntPerCel,
448 -- Cels_count => Cels_count,
448 -- Cels_count => Cels_count,
449 -- virgPos => virgPos
449 -- virgPos => virgPos
450 -- )
450 -- )
451 -- port map(
451 -- port map(
452 -- rst => rstn,
452 -- rst => rstn,
453 -- clk => clkm,
453 -- clk => clkm,
454 -- apbi => apbi,
454 -- apbi => apbi,
455 -- apbo => apbo(8),
455 -- apbo => apbo(8),
456 -- sample_clk_out => sample_clk_out,
456 -- sample_clk_out => sample_clk_out,
457 -- GOtest => Test(1),
457 -- GOtest => Test(1),
458 -- CoefsInitVal => (others => '1')
458 -- CoefsInitVal => (others => '1')
459 -- );
459 -- );
460 ----------------------------------------------------------------------
460 ----------------------------------------------------------------------
461
461
462 ----------------------------------------------------------------------
462 ----------------------------------------------------------------------
463 --- Reset and Clock generation -------------------------------------
463 --- Reset and Clock generation -------------------------------------
464 ----------------------------------------------------------------------
464 ----------------------------------------------------------------------
465
465
466 vcc <= (others => '1'); gnd <= (others => '0');
466 vcc <= (others => '1'); gnd <= (others => '0');
467 cgi.pllctrl <= "00"; cgi.pllrst <= rstraw;
467 cgi.pllctrl <= "00"; cgi.pllrst <= rstraw;
468
468
469 rst0 : rstgen port map (reset, clkm, cgo.clklock, rstn, rstraw);
469 rst0 : rstgen port map (reset, clkm, cgo.clklock, rstn, rstraw);
470
470
471
471
472 clk_pad : clkpad generic map (tech => padtech) port map (clk50MHz, lclk2x);
472 clk_pad : clkpad generic map (tech => padtech) port map (clk50MHz, lclk2x);
473
473
474 clkgen0 : clkgen -- clock generator
474 clkgen0 : clkgen -- clock generator
475 generic map (clktech, CFG_CLKMUL, CFG_CLKDIV, CFG_MCTRL_SDEN,
475 generic map (clktech, CFG_CLKMUL, CFG_CLKDIV, CFG_MCTRL_SDEN,
476 CFG_CLK_NOFB, 0, 0, 0, boardfreq, 0, 0, CFG_OCLKDIV)
476 CFG_CLK_NOFB, 0, 0, 0, boardfreq, 0, 0, CFG_OCLKDIV)
477 port map (lclk, lclk, clkm, open, clk2x, sdclkl, pciclk, cgi, cgo);
477 port map (lclk, lclk, clkm, open, clk2x, sdclkl, pciclk, cgi, cgo);
478
478
479 ramclk <= clkm;
479 ramclk <= clkm;
480 process(lclk2x)
480 process(lclk2x)
481 begin
481 begin
482 if lclk2x'event and lclk2x = '1' then
482 if lclk2x'event and lclk2x = '1' then
483 lclk <= not lclk;
483 lclk <= not lclk;
484 end if;
484 end if;
485 end process;
485 end process;
486
486
487 ----------------------------------------------------------------------
487 ----------------------------------------------------------------------
488 --- LEON3 processor / DSU / IRQ ------------------------------------
488 --- LEON3 processor / DSU / IRQ ------------------------------------
489 ----------------------------------------------------------------------
489 ----------------------------------------------------------------------
490
490
491 l3 : if CFG_LEON3 = 1 generate
491 l3 : if CFG_LEON3 = 1 generate
492 cpu : for i in 0 to CFG_NCPU-1 generate
492 cpu : for i in 0 to CFG_NCPU-1 generate
493 u0 : leon3s -- LEON3 processor
493 u0 : leon3s -- LEON3 processor
494 generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8,
494 generic map (i, fabtech, memtech, CFG_NWIN, CFG_DSU, CFG_FPU, CFG_V8,
495 0, CFG_MAC, pclow, 0, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE,
495 0, CFG_MAC, pclow, 0, CFG_NWP, CFG_ICEN, CFG_IREPL, CFG_ISETS, CFG_ILINE,
496 CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ,
496 CFG_ISETSZ, CFG_ILOCK, CFG_DCEN, CFG_DREPL, CFG_DSETS, CFG_DLINE, CFG_DSETSZ,
497 CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN,
497 CFG_DLOCK, CFG_DSNOOP, CFG_ILRAMEN, CFG_ILRAMSZ, CFG_ILRAMADDR, CFG_DLRAMEN,
498 CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP,
498 CFG_DLRAMSZ, CFG_DLRAMADDR, CFG_MMUEN, CFG_ITLBNUM, CFG_DTLBNUM, CFG_TLB_TYPE, CFG_TLB_REP,
499 CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, CFG_NCPU-1)
499 CFG_LDDEL, disas, CFG_ITBSZ, CFG_PWD, CFG_SVT, CFG_RSTADDR, CFG_NCPU-1)
500 port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso,
500 port map (clkm, rstn, ahbmi, ahbmo(i), ahbsi, ahbso,
501 irqi(i), irqo(i), dbgi(i), dbgo(i));
501 irqi(i), irqo(i), dbgi(i), dbgo(i));
502 end generate;
502 end generate;
503 errorn_pad : outpad generic map (tech => padtech) port map (errorn, dbgo(0).error);
503 errorn_pad : outpad generic map (tech => padtech) port map (errorn, dbgo(0).error);
504
504
505 dsugen : if CFG_DSU = 1 generate
505 dsugen : if CFG_DSU = 1 generate
506 dsu0 : dsu3 -- LEON3 Debug Support Unit
506 dsu0 : dsu3 -- LEON3 Debug Support Unit
507 generic map (hindex => 2, haddr => 16#900#, hmask => 16#F00#,
507 generic map (hindex => 2, haddr => 16#900#, hmask => 16#F00#,
508 ncpu => CFG_NCPU, tbits => 30, tech => memtech, irq => 0, kbytes => CFG_ATBSZ)
508 ncpu => CFG_NCPU, tbits => 30, tech => memtech, irq => 0, kbytes => CFG_ATBSZ)
509 port map (rstn, clkm, ahbmi, ahbsi, ahbso(2), dbgo, dbgi, dsui, dsuo);
509 port map (rstn, clkm, ahbmi, ahbsi, ahbso(2), dbgo, dbgi, dsui, dsuo);
510 -- dsuen_pad : inpad generic map (tech => padtech) port map (dsuen, dsui.enable);
510 -- dsuen_pad : inpad generic map (tech => padtech) port map (dsuen, dsui.enable);
511 dsui.enable <= '1';
511 dsui.enable <= '1';
512 dsubre_pad : inpad generic map (tech => padtech) port map (dsubre, dsui.break);
512 dsubre_pad : inpad generic map (tech => padtech) port map (dsubre, dsui.break);
513 dsuact_pad : outpad generic map (tech => padtech) port map (dsuact, dsuo.active);
513 dsuact_pad : outpad generic map (tech => padtech) port map (dsuact, dsuo.active);
514 end generate;
514 end generate;
515 end generate;
515 end generate;
516
516
517 nodsu : if CFG_DSU = 0 generate
517 nodsu : if CFG_DSU = 0 generate
518 ahbso(2) <= ahbs_none; dsuo.tstop <= '0'; dsuo.active <= '0';
518 ahbso(2) <= ahbs_none; dsuo.tstop <= '0'; dsuo.active <= '0';
519 end generate;
519 end generate;
520
520
521 irqctrl : if CFG_IRQ3_ENABLE /= 0 generate
521 irqctrl : if CFG_IRQ3_ENABLE /= 0 generate
522 irqctrl0 : irqmp -- interrupt controller
522 irqctrl0 : irqmp -- interrupt controller
523 generic map (pindex => 2, paddr => 2, ncpu => CFG_NCPU)
523 generic map (pindex => 2, paddr => 2, ncpu => CFG_NCPU)
524 port map (rstn, clkm, apbi, apbo(2), irqo, irqi);
524 port map (rstn, clkm, apbi, apbo(2), irqo, irqi);
525 end generate;
525 end generate;
526 irq3 : if CFG_IRQ3_ENABLE = 0 generate
526 irq3 : if CFG_IRQ3_ENABLE = 0 generate
527 x : for i in 0 to CFG_NCPU-1 generate
527 x : for i in 0 to CFG_NCPU-1 generate
528 irqi(i).irl <= "0000";
528 irqi(i).irl <= "0000";
529 end generate;
529 end generate;
530 apbo(2) <= apb_none;
530 apbo(2) <= apb_none;
531 end generate;
531 end generate;
532
532
533 ----------------------------------------------------------------------
533 ----------------------------------------------------------------------
534 --- Memory controllers ---------------------------------------------
534 --- Memory controllers ---------------------------------------------
535 ----------------------------------------------------------------------
535 ----------------------------------------------------------------------
536
536
537 memctrlr : mctrl generic map (hindex => 0,pindex => 0, paddr => 0)
537 memctrlr : mctrl generic map (hindex => 0,pindex => 0, paddr => 0)
538 port map (rstn, clkm, memi, memo, ahbsi, ahbso(0),apbi,apbo(0),wpo, sdo);
538 port map (rstn, clkm, memi, memo, ahbsi, ahbso(0),apbi,apbo(0),wpo, sdo);
539
539
540 memi.brdyn <= '1'; memi.bexcn <= '1';
540 memi.brdyn <= '1'; memi.bexcn <= '1';
541 memi.writen <= '1'; memi.wrn <= "1111"; memi.bwidth <= "10";
541 memi.writen <= '1'; memi.wrn <= "1111"; memi.bwidth <= "10";
542
542
543 bdr : for i in 0 to 3 generate
543 bdr : for i in 0 to 3 generate
544 data_pad : iopadv generic map (tech => padtech, width => 8)
544 data_pad : iopadv generic map (tech => padtech, width => 8)
545 port map (data(31-i*8 downto 24-i*8), memo.data(31-i*8 downto 24-i*8),
545 port map (data(31-i*8 downto 24-i*8), memo.data(31-i*8 downto 24-i*8),
546 memo.bdrive(i), memi.data(31-i*8 downto 24-i*8));
546 memo.bdrive(i), memi.data(31-i*8 downto 24-i*8));
547 end generate;
547 end generate;
548
548
549
549
550 addr_pad : outpadv generic map (width => 19, tech => padtech)
550 addr_pad : outpadv generic map (width => 19, tech => padtech)
551 port map (address, memo.address(20 downto 2));
551 port map (address, memo.address(20 downto 2));
552
552
553
553
554 SSRAM_0:entity ssram_plugin
554 SSRAM_0:entity ssram_plugin
555 generic map (tech => padtech)
555 generic map (tech => padtech)
556 port map
556 port map
557 (lclk2x,memo,SSRAM_CLK,nBWa,nBWb,nBWc,nBWd,nBWE,nADSC,nADSP,nADV,nGW,nCE1,CE2,nCE3,nOE,MODE,ZZ);
557 (lclk2x,memo,SSRAM_CLK,nBWa,nBWb,nBWc,nBWd,nBWE,nADSC,nADSP,nADV,nGW,nCE1,CE2,nCE3,nOE,MODE,ZZ);
558
558
559 ----------------------------------------------------------------------
559 ----------------------------------------------------------------------
560 --- AHB CONTROLLER -------------------------------------------------
560 --- AHB CONTROLLER -------------------------------------------------
561 ----------------------------------------------------------------------
561 ----------------------------------------------------------------------
562
562
563 ahb0 : ahbctrl -- AHB arbiter/multiplexer
563 ahb0 : ahbctrl -- AHB arbiter/multiplexer
564 generic map (defmast => CFG_DEFMST, split => CFG_SPLIT,
564 generic map (defmast => CFG_DEFMST, split => CFG_SPLIT,
565 rrobin => CFG_RROBIN, ioaddr => CFG_AHBIO,
565 rrobin => CFG_RROBIN, ioaddr => CFG_AHBIO,
566 ioen => IOAEN, nahbm => maxahbm, nahbs => 8)
566 ioen => IOAEN, nahbm => maxahbm, nahbs => 8)
567 port map (rstn, clkm, ahbmi, ahbmo, ahbsi, ahbso);
567 port map (rstn, clkm, ahbmi, ahbmo, ahbsi, ahbso);
568
568
569 ----------------------------------------------------------------------
569 ----------------------------------------------------------------------
570 --- AHB UART -------------------------------------------------------
570 --- AHB UART -------------------------------------------------------
571 ----------------------------------------------------------------------
571 ----------------------------------------------------------------------
572
572
573 dcomgen : if CFG_AHB_UART = 1 generate
573 dcomgen : if CFG_AHB_UART = 1 generate
574 dcom0: ahbuart -- Debug UART
574 dcom0: ahbuart -- Debug UART
575 generic map (hindex => CFG_NCPU, pindex => 7, paddr => 7)
575 generic map (hindex => CFG_NCPU, pindex => 7, paddr => 7)
576 port map (rstn, clkm, ahbuarti, ahbuarto, apbi, apbo(7), ahbmi, ahbmo(CFG_NCPU));
576 port map (rstn, clkm, ahbuarti, ahbuarto, apbi, apbo(7), ahbmi, ahbmo(CFG_NCPU));
577 dsurx_pad : inpad generic map (tech => padtech) port map (ahbrxd, ahbuarti.rxd);
577 dsurx_pad : inpad generic map (tech => padtech) port map (ahbrxd, ahbuarti.rxd);
578 dsutx_pad : outpad generic map (tech => padtech) port map (ahbtxd, ahbuarto.txd);
578 dsutx_pad : outpad generic map (tech => padtech) port map (ahbtxd, ahbuarto.txd);
579 -- led(0) <= not ahbuarti.rxd; led(1) <= not ahbuarto.txd;
579 -- led(0) <= not ahbuarti.rxd; led(1) <= not ahbuarto.txd;
580 end generate;
580 end generate;
581 nouah : if CFG_AHB_UART = 0 generate apbo(7) <= apb_none; end generate;
581 nouah : if CFG_AHB_UART = 0 generate apbo(7) <= apb_none; end generate;
582
582
583 ----------------------------------------------------------------------
583 ----------------------------------------------------------------------
584 --- APB Bridge -----------------------------------------------------
584 --- APB Bridge -----------------------------------------------------
585 ----------------------------------------------------------------------
585 ----------------------------------------------------------------------
586
586
587 apb0 : apbctrl -- AHB/APB bridge
587 apb0 : apbctrl -- AHB/APB bridge
588 generic map (hindex => 1, haddr => CFG_APBADDR)
588 generic map (hindex => 1, haddr => CFG_APBADDR)
589 port map (rstn, clkm, ahbsi, ahbso(1), apbi, apbo );
589 port map (rstn, clkm, ahbsi, ahbso(1), apbi, apbo );
590
590
591 ----------------------------------------------------------------------
591 ----------------------------------------------------------------------
592 --- GPT Timer ------------------------------------------------------
592 --- GPT Timer ------------------------------------------------------
593 ----------------------------------------------------------------------
593 ----------------------------------------------------------------------
594
594
595 gpt : if CFG_GPT_ENABLE /= 0 generate
595 gpt : if CFG_GPT_ENABLE /= 0 generate
596 timer0 : gptimer -- timer unit
596 timer0 : gptimer -- timer unit
597 generic map (pindex => 3, paddr => 3, pirq => CFG_GPT_IRQ,
597 generic map (pindex => 3, paddr => 3, pirq => CFG_GPT_IRQ,
598 sepirq => CFG_GPT_SEPIRQ, sbits => CFG_GPT_SW, ntimers => CFG_GPT_NTIM,
598 sepirq => CFG_GPT_SEPIRQ, sbits => CFG_GPT_SW, ntimers => CFG_GPT_NTIM,
599 nbits => CFG_GPT_TW)
599 nbits => CFG_GPT_TW)
600 port map (rstn, clkm, apbi, apbo(3), gpti, gpto);
600 port map (rstn, clkm, apbi, apbo(3), gpti, gpto);
601 gpti.dhalt <= dsuo.tstop; gpti.extclk <= '0';
601 gpti.dhalt <= dsuo.tstop; gpti.extclk <= '0';
602 -- led(4) <= gpto.wdog;
602 -- led(4) <= gpto.wdog;
603 end generate;
603 end generate;
604 notim : if CFG_GPT_ENABLE = 0 generate apbo(3) <= apb_none; end generate;
604 notim : if CFG_GPT_ENABLE = 0 generate apbo(3) <= apb_none; end generate;
605
605
606
606
607 ----------------------------------------------------------------------
607 ----------------------------------------------------------------------
608 --- APB UART -------------------------------------------------------
608 --- APB UART -------------------------------------------------------
609 ----------------------------------------------------------------------
609 ----------------------------------------------------------------------
610
610
611 ua1 : if CFG_UART1_ENABLE /= 0 generate
611 ua1 : if CFG_UART1_ENABLE /= 0 generate
612 uart1 : apbuart -- UART 1
612 uart1 : apbuart -- UART 1
613 generic map (pindex => 1, paddr => 1, pirq => 2, console => dbguart,
613 generic map (pindex => 1, paddr => 1, pirq => 2, console => dbguart,
614 fifosize => CFG_UART1_FIFO)
614 fifosize => CFG_UART1_FIFO)
615 port map (rstn, clkm, apbi, apbo(1), ahbuarti, apbuarto);
615 port map (rstn, clkm, apbi, apbo(1), ahbuarti, apbuarto);
616 apbuarti.rxd <= urxd1; apbuarti.extclk <= '0'; utxd1 <= apbuarto.txd;
616 apbuarti.rxd <= urxd1; apbuarti.extclk <= '0'; utxd1 <= apbuarto.txd;
617 apbuarti.ctsn <= '0'; --rtsn1 <= apbuarto.rtsn;
617 apbuarti.ctsn <= '0'; --rtsn1 <= apbuarto.rtsn;
618 -- led(0) <= not apbuarti.rxd; led(1) <= not apbuarto.txd;
618 -- led(0) <= not apbuarti.rxd; led(1) <= not apbuarto.txd;
619 end generate;
619 end generate;
620 noua0 : if CFG_UART1_ENABLE = 0 generate apbo(1) <= apb_none; end generate;
620 noua0 : if CFG_UART1_ENABLE = 0 generate apbo(1) <= apb_none; end generate;
621
621
622 ----------------------------------------------------------------------
622 ----------------------------------------------------------------------
623 --- GPIO -----------------------------------------------------------
623 --- GPIO -----------------------------------------------------------
624 ----------------------------------------------------------------------
624 ----------------------------------------------------------------------
625
625
626 gpio0 : if CFG_GRGPIO_ENABLE /= 0 generate -- GR GPIO unit
626 gpio0 : if CFG_GRGPIO_ENABLE /= 0 generate -- GR GPIO unit
627 grgpio0: grgpio
627 grgpio0: grgpio
628 generic map( pindex => 11, paddr => 11, imask => CFG_GRGPIO_IMASK, nbits => 7)
628 generic map( pindex => 11, paddr => 11, imask => CFG_GRGPIO_IMASK, nbits => 7)
629 port map( rstn, clkm, apbi, apbo(11), gpioi, gpioo);
629 port map( rstn, clkm, apbi, apbo(11), gpioi, gpioo);
630
630
631 pio_pads : for i in 0 to 6 generate
631 pio_pads : for i in 0 to 6 generate
632 pio_pad : iopad generic map (tech => padtech)
632 pio_pad : iopad generic map (tech => padtech)
633 port map (gpio(i), gpioo.dout(i), gpioo.oen(i), gpioi.din(i));
633 port map (gpio(i), gpioo.dout(i), gpioo.oen(i), gpioi.din(i));
634 end generate;
634 end generate;
635 end generate;
635 end generate;
636
636
637
637
638 end Behavioral; No newline at end of file
638 end Behavioral;
General Comments 0
You need to be logged in to leave comments. Login now