Post Go back to editing

Write, Read and generate waveform with SRAM od AD9106

Category: Software
Product Number: AD9106BCPZ

I am reaching out to seek assistance regarding some challenges I am facing with the write and read operations on the SRAM of the AD9106 devices and for generating waveform using sram. I have thoroughly studied the respective datasheets (AD9106 datasheet, pages 22-23) and also Evaluating the AD9106/AD9102 Digital-to-Analog and Waveform Generator Converter using MBED [Analog Devices Wiki] but have encountered difficulties in achieving the desired functionality.

Specifically, I am experiencing issues with:

1) Writing data to the SRAM: For writing data to the SRAM select PAT_STATUS REGISTER 1E=0X04 WRITE Mode. And write data on SRAM Adderess 6000-6FFF as per code example of AD910x - Library files for EVAL-AD910x | Mbed

/*
 * DAC.c
 *
 *  Created on: Jul 26, 2023
 *      Author: Dipak patil
 */

#include "main.h"
#include <stdio.h>
extern void delay_us (uint16_t us);
extern SPI_HandleTypeDef hspi4;
extern UART_HandleTypeDef huart2;


//void DAC(void)
//{
//							// that address and value present in sram section of dac9106 datasheet
//	/*OG*/	                   uint16_t addr[]={0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x001F,0x0020,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x001D,0x001E};
//							   uint16_t Valu[]={0x0000,0x0E00,0x0000,0x0000,0x4000,0x4000,0x4000,0x4000,0x0000,0x1F00,0x1F00,0x1F00,0x1F00,0x0000,0x0000,0x0000,0x000E,0x0000,0x0000,0x0000,0x0000,0x1212,0x1232,0x0111,0x6D60,0x0101,0x0101,0x0003,0x0000,0x0000,0x0000,0x0000,0x0000,0x4000,0x4000,0x4000,0x4000,0x1011,0x1010,0x002B,0xB100,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07D0,0x0000,0x0000,0x0001,0x03E8,0x0000,0x0000,0x0100,0x0BB8,0x0000,0xFFF0,0x0100,0x0FA0,0x0000,0xFFF0,0x0100,0x0005,0x0001,0x0001};
///*sine og*/                 // uint16_t Valu[]={0x0000,0x0E00,0x0000,0x0000,0x4000,0x4000,0x4000,0x4000,0x0000,0x1F00,0x1F00,0x1F00,0x1F00,0x0000,0x0000,0x0000,0x000E,0x0000,0x0000,0x0000,0x0000,0x3232,0x3232,0x0111,0xFFFF,0x0101,0x0101,0x0003,0x0000,0x0000,0x0000,0x0000,0x0000,0x4000,0x4000/*AMPLITUTE*/,0x4000,0x4000,0x0001,0x0200,0x06D3/*MSB*/,0xA100/*LSB*/,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07D0,0x0000,0x0000,0x0100,0x0100,0x0000,0x0000,0x0100,0x0BB8,0x0000,0x0000,0x0100,0x0FA0,0x0000,0x0000,0x0100,0x0004,0x0001,0x0001};
///*Sawtooth varible freq og*/ //uint16_t Valu[]={0x0000,0x0E00,0x0000,0x0000,0x4000,0x4000,0x4000,0x4000,0x0000,0x1F00,0x1F00,0x1F00,0x1F00,0x0000,0x0000,0x0000,0x000E,0x0000,0x0000,0x0000,0x0000,0x1212,0x1231,0x0111,0x61A8,0x0101,0x0101,0x0003,0x0000,0x0000,0x0000,0x0000,0x0000,0x4000,0x4000,0x4000,0x4000,0x1010,0x0600,0x0036,0x9D00,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07D0,0x0000,0x0000,0x0001,0x03E8,0x0000,0x0000,0x0100,0x03E8,0x0000,0x0000,0x0001,0x0FA0,0x0000,0x0000,0x16FF,0x0004,0x0001,0x0001};
///*ramp up sawtooth//og*/ //    uint16_t Valu[]={0x0000,0x0E00,0x0000,0x0000,0x4000,0x4000,0x4000,0x4000,0x0000,0x1F00,0x1F00,0x1F00,0x1F00,0x0000,0x0000,0x0000,0x000E,0x0000,0x0000,0x0000,0x0000,0x1212,0x1232,0x0111,0xFFFF,0x0101,0x0101,0x0003,0x0000,0x0000,0x0000,0x0000,0x0000,0x4000,0x4000,0x4000,0x4000,0x1010,0x0600,0x0036,0x9D00,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07D0,0x0000,0x0000,0x0001,0x03E8,0x0000,0x0000,0x0100,0x03E8,0x0000,0x0000,0x0001,0x0FA0,0x0000,0x0000,0x16FF,0x0004,0x0001,0x0001};
///*ramp dawn sawtooth//og*/  //   uint16_t Valu[]={0x0000,0x0E00,0x0000,0x0000,0x4000,0x4000,0x4000,0x4000,0x0000,0x1F00,0x1F00,0x1F00,0x1F00,0x0000,0x0000,0x0000,0x000E,0x0000,0x0000,0x0000,0x0000,0x1212,0x1232,0x0111,0xFFFF,0x0101,0x0101,0x0003,0x0000,0x0000,0x0000,0x0000,0x0000,0x4000,0x4000,0x4000,0x4000,0x1011,0x0600,0x0036,0x9D00,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07D0,0x0000,0x0000,0x0001,0x03E8,0x0000,0x0000,0x0100,0x03E8,0x0000,0x0000,0x0001,0x0FA0,0x0000,0x0000,0x16FF,0x0004,0x0001,0x0001};
//
//				/*og */        uint16_t Radd[]={0x8000,0x8001,0x8002,0x8003,0x8004,0x8005,0x8006,0x8007,0x8008,0x8009,0x800A,0x800B,0x800C,0x000D,0x000E,0x801F,0x8020,0x8022,0x8023,0x8024,0x8025,0x8026,0x8027,0x8028,0x8029,0x802A,0x802B,0x802C,0x802D,0x802E,0x802F,0x8030,0x8031,0x8032,0x8033,0x8034,0x8035,0x8036,0x8037,0x803E,0x803F,0x8040,0x8041,0x8042,0x8043,0x8044,0x8045,0x8046,0x8047,0x8050,0x8051,0x8052,0x8053,0x8054,0x8055,0x8056,0x8057,0x8058,0x8059,0x805A,0x805B,0x805C,0x805D,0x805E,0x805F,0x8060,0x001D,0x001E};
//             	 	 	 	 	 //                0        1      2     3      4      5        6    7      8      9      10     11     12      13    14     15      16     17     18    19     20      21   22      23    24       25     26    27     28        29     30   31     32     33    34     35     36     37      38    39      40     41    42      43    44     45      46     47    48     49        50    51    52     53   54      55       56    57      58    59   60       61      62     63    64  65        66     67
//
////////////////////////////////////////////////////////////////
////comment out for the pre-store values waveform
////
//
//	int i=0,j=0,k=0;
//	uint16_t Read_Value=0;
//	uint8_t s=0,s1=0,s2=0,s3=0;
//
//	for(i=0,j=0,k=0;i<69;i++,j++,k++) //////////////////////////67
//	{
//		HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_RESET);  // Activate CS
//		s=HAL_SPI_Transmit(&hspi4, (uint8_t*)&addr[i], 1, 100);    // spi transmit address to dac ad9106 one by one
//		s1=HAL_SPI_Transmit(&hspi4,(uint8_t*)&Valu[j], 1, 100);		// spi transmit value to dac ad9106 one by one
//		HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_SET);	// Deactivate CS
//		printf("3s=%d s=%d W- A=%x, V=%x\n\r",s,s1,addr[i],Valu[j]); // check transmitted address/value and declare address/value same or not
//		delay_us(10);
////		HAL_Delay(100);
//
//		HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_RESET);    // Activate CS
//		s2=HAL_SPI_Transmit(&hspi4, (uint8_t*)&Radd[k], 1, 100);		// spi transmit read address
//		s3=HAL_SPI_Receive(&hspi4,(uint8_t*)&Read_Value,1, 100);		// spi receive value for check read value right or not
//		HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_SET);		// Deactivate CS
//		printf("4s=%d s=%d R- A=%x,V=%x\n\n\r",s2,s3,Radd[k],Read_Value);
//		delay_us(10);
////		HAL_Delay(100);
//
////	}
//	HAL_GPIO_WritePin(GPIOH,Trigger1_Pin, GPIO_PIN_RESET);   /////////////////remove comment for sawtooth
//	delay_us(5000);
////	HAL_Delay(5000);
//	HAL_GPIO_WritePin(GPIOH,Trigger1_Pin, GPIO_PIN_SET);
//	}
//////////////////////////////////////////////////////////////////////////////////////
//
//}



void SRAM_DAC(void)
{
			uint16_t reg_addr[]={0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x001f, 0x0020, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0047, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x001e, 0x001d};

   uint16_t sramramp_regval[66]={0x0000, 0x0e00, 0x0000, 0x0000, 0x4000, 0x4000, 0x4000, 0x4000, 0x0000, 0x1f00, 0x1f00, 0x1f00, 0x1f00, 0x0000, 0x0000, 0x0000, 0x000e, 0x0000, 0x0000, 0x0000, 0x0000, 0x3030, 0x3030, 0x0111, 0xffff, 0x0101, 0x0101, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4000, 0x2000, 0x2000, 0x4000, 0x0001, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07d0, 0xc000, 0xfff0, 0x0100, 0x03e8, 0x8000, 0xbff0, 0x0100, 0x0bb8, 0x3ff0, 0x7ff0, 0x0100, 0x0fa0, 0x0000, 0x3ff0, 0x0100, 0x0001, 0x0001};
   int16_t sram_ramp[4096]={-2048, -2047, -2046, -2045, -2044, -2043, -2042, -2041, -2040, -2039, -2038, -2037, -2036, -2035, -2034, -2033, -2032, -2031, -2030, -2029, -2028, -2027, -2026, -2025, -2024, -2023, -2022, -2021, -2020, -2019, -2018, -2017, -2016, -2015, -2014, -2013, -2012, -2011, -2010, -2009, -2008, -2007, -2006, -2005, -2004, -2003, -2002, -2001, -2000, -1999, -1998, -1997, -1996, -1995, -1994, -1993, -1992, -1991, -1990, -1989, -1988, -1987, -1986, -1985, -1984, -1983, -1982, -1981, -1980, -1979, -1978, -1977, -1976, -1975, -1974, -1973, -1972, -1971, -1970, -1969, -1968, -1967, -1966, -1965, -1964, -1963, -1962, -1961, -1960, -1959, -1958, -1957, -1956, -1955, -1954, -1953, -1952, -1951, -1950, -1949, -1948, -1947, -1946, -1945, -1944, -1943, -1942, -1941, -1940, -1939, -1938, -1937, -1936, -1935, -1934, -1933, -1932, -1931, -1930, -1929, -1928, -1927, -1926, -1925, -1924, -1923, -1922, -1921, -1920, -1919, -1918, -1917, -1916, -1915, -1914, -1913, -1912, -1911, -1910, -1909, -1908, -1907, -1906, -1905, -1904, -1903, -1902, -1901, -1900, -1899, -1898, -1897, -1896, -1895, -1894, -1893, -1892, -1891, -1890, -1889, -1888, -1887, -1886, -1885, -1884, -1883, -1882, -1881, -1880, -1879, -1878, -1877, -1876, -1875, -1874, -1873, -1872, -1871, -1870, -1869, -1868, -1867, -1866, -1865, -1864, -1863, -1862, -1861, -1860, -1859, -1858, -1857, -1856, -1855, -1854, -1853, -1852, -1851, -1850, -1849, -1848, -1847, -1846, -1845, -1844, -1843, -1842, -1841, -1840, -1839, -1838, -1837, -1836, -1835, -1834, -1833, -1832, -1831, -1830, -1829, -1828, -1827, -1826, -1825, -1824, -1823, -1822, -1821, -1820, -1819, -1818, -1817, -1816, -1815, -1814, -1813, -1812, -1811, -1810, -1809, -1808, -1807, -1806, -1805, -1804, -1803, -1802, -1801, -1800, -1799, -1798, -1797, -1796, -1795, -1794, -1793, -1792, -1791, -1790, -1789, -1788, -1787, -1786, -1785, -1784, -1783, -1782, -1781, -1780, -1779, -1778, -1777, -1776, -1775, -1774, -1773, -1772, -1771, -1770, -1769, -1768, -1767, -1766, -1765, -1764, -1763, -1762, -1761, -1760, -1759, -1758, -1757, -1756, -1755, -1754, -1753, -1752, -1751, -1750, -1749, -1748, -1747, -1746, -1745, -1744, -1743, -1742, -1741, -1740, -1739, -1738, -1737, -1736, -1735, -1734, -1733, -1732, -1731, -1730, -1729, -1728, -1727, -1726, -1725, -1724, -1723, -1722, -1721, -1720, -1719, -1718, -1717, -1716, -1715, -1714, -1713, -1712, -1711, -1710, -1709, -1708, -1707, -1706, -1705, -1704, -1703, -1702, -1701, -1700, -1699, -1698, -1697, -1696, -1695, -1694, -1693, -1692, -1691, -1690, -1689, -1688, -1687, -1686, -1685, -1684, -1683, -1682, -1681, -1680, -1679, -1678, -1677, -1676, -1675, -1674, -1673, -1672, -1671, -1670, -1669, -1668, -1667, -1666, -1665, -1664, -1663, -1662, -1661, -1660, -1659, -1658, -1657, -1656, -1655, -1654, -1653, -1652, -1651, -1650, -1649, -1648, -1647, -1646, -1645, -1644, -1643, -1642, -1641, -1640, -1639, -1638, -1637, -1636, -1635, -1634, -1633, -1632, -1631, -1630, -1629, -1628, -1627, -1626, -1625, -1624, -1623, -1622, -1621, -1620, -1619, -1618, -1617, -1616, -1615, -1614, -1613, -1612, -1611, -1610, -1609, -1608, -1607, -1606, -1605, -1604, -1603, -1602, -1601, -1600, -1599, -1598, -1597, -1596, -1595, -1594, -1593, -1592, -1591, -1590, -1589, -1588, -1587, -1586, -1585, -1584, -1583, -1582, -1581, -1580, -1579, -1578, -1577, -1576, -1575, -1574, -1573, -1572, -1571, -1570, -1569, -1568, -1567, -1566, -1565, -1564, -1563, -1562, -1561, -1560, -1559, -1558, -1557, -1556, -1555, -1554, -1553, -1552, -1551, -1550, -1549, -1548, -1547, -1546, -1545, -1544, -1543, -1542, -1541, -1540, -1539, -1538, -1537, -1536, -1535, -1534, -1533, -1532, -1531, -1530, -1529, -1528, -1527, -1526, -1525, -1524, -1523, -1522, -1521, -1520, -1519, -1518, -1517, -1516, -1515, -1514, -1513, -1512, -1511, -1510, -1509, -1508, -1507, -1506, -1505, -1504, -1503, -1502, -1501, -1500, -1499, -1498, -1497, -1496, -1495, -1494, -1493, -1492, -1491, -1490, -1489, -1488, -1487, -1486, -1485, -1484, -1483, -1482, -1481, -1480, -1479, -1478, -1477, -1476, -1475, -1474, -1473, -1472, -1471, -1470, -1469, -1468, -1467, -1466, -1465, -1464, -1463, -1462, -1461, -1460, -1459, -1458, -1457, -1456, -1455, -1454, -1453, -1452, -1451, -1450, -1449, -1448, -1447, -1446, -1445, -1444, -1443, -1442, -1441, -1440, -1439, -1438, -1437, -1436, -1435, -1434, -1433, -1432, -1431, -1430, -1429, -1428, -1427, -1426, -1425, -1424, -1423, -1422, -1421, -1420, -1419, -1418, -1417, -1416, -1415, -1414, -1413, -1412, -1411, -1410, -1409, -1408, -1407, -1406, -1405, -1404, -1403, -1402, -1401, -1400, -1399, -1398, -1397, -1396, -1395, -1394, -1393, -1392, -1391, -1390, -1389, -1388, -1387, -1386, -1385, -1384, -1383, -1382, -1381, -1380, -1379, -1378, -1377, -1376, -1375, -1374, -1373, -1372, -1371, -1370, -1369, -1368, -1367, -1366, -1365, -1364, -1363, -1362, -1361, -1360, -1359, -1358, -1357, -1356, -1355, -1354, -1353, -1352, -1351, -1350, -1349, -1348, -1347, -1346, -1345, -1344, -1343, -1342, -1341, -1340, -1339, -1338, -1337, -1336, -1335, -1334, -1333, -1332, -1331, -1330, -1329, -1328, -1327, -1326, -1325, -1324, -1323, -1322, -1321, -1320, -1319, -1318, -1317, -1316, -1315, -1314, -1313, -1312, -1311, -1310, -1309, -1308, -1307, -1306, -1305, -1304, -1303, -1302, -1301, -1300, -1299, -1298, -1297, -1296, -1295, -1294, -1293, -1292, -1291, -1290, -1289, -1288, -1287, -1286, -1285, -1284, -1283, -1282, -1281, -1280, -1279, -1278, -1277, -1276, -1275, -1274, -1273, -1272, -1271, -1270, -1269, -1268, -1267, -1266, -1265, -1264, -1263, -1262, -1261, -1260, -1259, -1258, -1257, -1256, -1255, -1254, -1253, -1252, -1251, -1250, -1249, -1248, -1247, -1246, -1245, -1244, -1243, -1242, -1241, -1240, -1239, -1238, -1237, -1236, -1235, -1234, -1233, -1232, -1231, -1230, -1229, -1228, -1227, -1226, -1225, -1224, -1223, -1222, -1221, -1220, -1219, -1218, -1217, -1216, -1215, -1214, -1213, -1212, -1211, -1210, -1209, -1208, -1207, -1206, -1205, -1204, -1203, -1202, -1201, -1200, -1199, -1198, -1197, -1196, -1195, -1194, -1193, -1192, -1191, -1190, -1189, -1188, -1187, -1186, -1185, -1184, -1183, -1182, -1181, -1180, -1179, -1178, -1177, -1176, -1175, -1174, -1173, -1172, -1171, -1170, -1169, -1168, -1167, -1166, -1165, -1164, -1163, -1162, -1161, -1160, -1159, -1158, -1157, -1156, -1155, -1154, -1153, -1152, -1151, -1150, -1149, -1148, -1147, -1146, -1145, -1144, -1143, -1142, -1141, -1140, -1139, -1138, -1137, -1136, -1135, -1134, -1133, -1132, -1131, -1130, -1129, -1128, -1127, -1126, -1125, -1124, -1123, -1122, -1121, -1120, -1119, -1118, -1117, -1116, -1115, -1114, -1113, -1112, -1111, -1110, -1109, -1108, -1107, -1106, -1105, -1104, -1103, -1102, -1101, -1100, -1099, -1098, -1097, -1096, -1095, -1094, -1093, -1092, -1091, -1090, -1089, -1088, -1087, -1086, -1085, -1084, -1083, -1082, -1081, -1080, -1079, -1078, -1077, -1076, -1075, -1074, -1073, -1072, -1071, -1070, -1069, -1068, -1067, -1066, -1065, -1064, -1063, -1062, -1061, -1060, -1059, -1058, -1057, -1056, -1055, -1054, -1053, -1052, -1051, -1050, -1049, -1048, -1047, -1046, -1045, -1044, -1043, -1042, -1041, -1040, -1039, -1038, -1037, -1036, -1035, -1034, -1033, -1032, -1031, -1030, -1029, -1028, -1027, -1026, -1025, -1024, -1023, -1022, -1021, -1020, -1019, -1018, -1017, -1016, -1015, -1014, -1013, -1012, -1011, -1010, -1009, -1008, -1007, -1006, -1005, -1004, -1003, -1002, -1001, -1000, -999, -998, -997, -996, -995, -994, -993, -992, -991, -990, -989, -988, -987, -986, -985, -984, -983, -982, -981, -980, -979, -978, -977, -976, -975, -974, -973, -972, -971, -970, -969, -968, -967, -966, -965, -964, -963, -962, -961, -960, -959, -958, -957, -956, -955, -954, -953, -952, -951, -950, -949, -948, -947, -946, -945, -944, -943, -942, -941, -940, -939, -938, -937, -936, -935, -934, -933, -932, -931, -930, -929, -928, -927, -926, -925, -924, -923, -922, -921, -920, -919, -918, -917, -916, -915, -914, -913, -912, -911, -910, -909, -908, -907, -906, -905, -904, -903, -902, -901, -900, -899, -898, -897, -896, -895, -894, -893, -892, -891, -890, -889, -888, -887, -886, -885, -884, -883, -882, -881, -880, -879, -878, -877, -876, -875, -874, -873, -872, -871, -870, -869, -868, -867, -866, -865, -864, -863, -862, -861, -860, -859, -858, -857, -856, -855, -854, -853, -852, -851, -850, -849, -848, -847, -846, -845, -844, -843, -842, -841, -840, -839, -838, -837, -836, -835, -834, -833, -832, -831, -830, -829, -828, -827, -826, -825, -824, -823, -822, -821, -820, -819, -818, -817, -816, -815, -814, -813, -812, -811, -810, -809, -808, -807, -806, -805, -804, -803, -802, -801, -800, -799, -798, -797, -796, -795, -794, -793, -792, -791, -790, -789, -788, -787, -786, -785, -784, -783, -782, -781, -780, -779, -778, -777, -776, -775, -774, -773, -772, -771, -770, -769, -768, -767, -766, -765, -764, -763, -762, -761, -760, -759, -758, -757, -756, -755, -754, -753, -752, -751, -750, -749, -748, -747, -746, -745, -744, -743, -742, -741, -740, -739, -738, -737, -736, -735, -734, -733, -732, -731, -730, -729, -728, -727, -726, -725, -724, -723, -722, -721, -720, -719, -718, -717, -716, -715, -714, -713, -712, -711, -710, -709, -708, -707, -706, -705, -704, -703, -702, -701, -700, -699, -698, -697, -696, -695, -694, -693, -692, -691, -690, -689, -688, -687, -686, -685, -684, -683, -682, -681, -680, -679, -678, -677, -676, -675, -674, -673, -672, -671, -670, -669, -668, -667, -666, -665, -664, -663, -662, -661, -660, -659, -658, -657, -656, -655, -654, -653, -652, -651, -650, -649, -648, -647, -646, -645, -644, -643, -642, -641, -640, -639, -638, -637, -636, -635, -634, -633, -632, -631, -630, -629, -628, -627, -626, -625, -624, -623, -622, -621, -620, -619, -618, -617, -616, -615, -614, -613, -612, -611, -610, -609, -608, -607, -606, -605, -604, -603, -602, -601, -600, -599, -598, -597, -596, -595, -594, -593, -592, -591, -590, -589, -588, -587, -586, -585, -584, -583, -582, -581, -580, -579, -578, -577, -576, -575, -574, -573, -572, -571, -570, -569, -568, -567, -566, -565, -564, -563, -562, -561, -560, -559, -558, -557, -556, -555, -554, -553, -552, -551, -550, -549, -548, -547, -546, -545, -544, -543, -542, -541, -540, -539, -538, -537, -536, -535, -534, -533, -532, -531, -530, -529, -528, -527, -526, -525, -524, -523, -522, -521, -520, -519, -518, -517, -516, -515, -514, -513, -512, -511, -510, -509, -508, -507, -506, -505, -504, -503, -502, -501, -500, -499, -498, -497, -496, -495, -494, -493, -492, -491, -490, -489, -488, -487, -486, -485, -484, -483, -482, -481, -480, -479, -478, -477, -476, -475, -474, -473, -472, -471, -470, -469, -468, -467, -466, -465, -464, -463, -462, -461, -460, -459, -458, -457, -456, -455, -454, -453, -452, -451, -450, -449, -448, -447, -446, -445, -444, -443, -442, -441, -440, -439, -438, -437, -436, -435, -434, -433, -432, -431, -430, -429, -428, -427, -426, -425, -424, -423, -422, -421, -420, -419, -418, -417, -416, -415, -414, -413, -412, -411, -410, -409, -408, -407, -406, -405, -404, -403, -402, -401, -400, -399, -398, -397, -396, -395, -394, -393, -392, -391, -390, -389, -388, -387, -386, -385, -384, -383, -382, -381, -380, -379, -378, -377, -376, -375, -374, -373, -372, -371, -370, -369, -368, -367, -366, -365, -364, -363, -362, -361, -360, -359, -358, -357, -356, -355, -354, -353, -352, -351, -350, -349, -348, -347, -346, -345, -344, -343, -342, -341, -340, -339, -338, -337, -336, -335, -334, -333, -332, -331, -330, -329, -328, -327, -326, -325, -324, -323, -322, -321, -320, -319, -318, -317, -316, -315, -314, -313, -312, -311, -310, -309, -308, -307, -306, -305, -304, -303, -302, -301, -300, -299, -298, -297, -296, -295, -294, -293, -292, -291, -290, -289, -288, -287, -286, -285, -284, -283, -282, -281, -280, -279, -278, -277, -276, -275, -274, -273, -272, -271, -270, -269, -268, -267, -266, -265, -264, -263, -262, -261, -260, -259, -258, -257, -256, -255, -254, -253, -252, -251, -250, -249, -248, -247, -246, -245, -244, -243, -242, -241, -240, -239, -238, -237, -236, -235, -234, -233, -232, -231, -230, -229, -228, -227, -226, -225, -224, -223, -222, -221, -220, -219, -218, -217, -216, -215, -214, -213, -212, -211, -210, -209, -208, -207, -206, -205, -204, -203, -202, -201, -200, -199, -198, -197, -196, -195, -194, -193, -192, -191, -190, -189, -188, -187, -186, -185, -184, -183, -182, -181, -180, -179, -178, -177, -176, -175, -174, -173, -172, -171, -170, -169, -168, -167, -166, -165, -164, -163, -162, -161, -160, -159, -158, -157, -156, -155, -154, -153, -152, -151, -150, -149, -148, -147, -146, -145, -144, -143, -142, -141, -140, -139, -138, -137, -136, -135, -134, -133, -132, -131, -130, -129, -128, -127, -126, -125, -124, -123, -122, -121, -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047};

	//		uint16_t ddssine_regval[66]={0x0000, 0x0e00, 0x0000, 0x0000, 0x4000, 0x4000, 0x4000, 0x4000, 0x0000, 0x1f00, 0x1f00, 0x1f00, 0x1f00, 0x0000, 0x0000, 0x0000, 0x000e, 0x0000, 0x0000, 0x0000, 0x0000, 0x3232, 0x3232, 0x0111, 0xffff, 0x0101, 0x0101, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4000, 0x4000, 0x4000, 0x4000, 0x0001, 0x0200, 0x0a3d, 0x7100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07d0, 0x0000, 0x0000, 0x0100, 0x03e8, 0x0000, 0x0000, 0x0100, 0x0bb8, 0x0000, 0x0000, 0x0100, 0x0fa0, 0x0000, 0x0000, 0x0100, 0x0001, 0x0001};

//
//    uint16_t gaussian_regval[]={0x0000, 0x0e00, 0x0000, 0x0000, 0x4000, 0x4000, 0x4000, 0x4000, 0x0000, 0x1f00, 0x1f00, 0x1f00, 0x1f00, 0x0000, 0x0000, 0x0000, 0x000e, 0x0000, 0x0000, 0x0000, 0x0000, 0x3333, 0x3333, 0x0111, 0xffff, 0x0101, 0x0101, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4000, 0x4000, 0x4000, 0x4000, 0x0001, 0x0200, 0x0750, 0x7500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07d0, 0x0000, 0xfff0, 0x0100, 0x03e8, 0x0000, 0xfff0, 0x0100, 0x0bb8, 0x0000, 0xfff0, 0x0100, 0x0fa0, 0x0000, 0xfff0, 0x0100, 0x0001, 0x0001};
//			int16_t sram_gaussian[4096]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 15, 15, 15, 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 20, 20, 20, 21, 21, 22, 22, 23, 23, 23, 24, 24, 25, 25, 26, 27, 27, 28, 28, 29, 29, 30, 31, 31, 32, 33, 33, 34, 35, 35, 36, 37, 37, 38, 39, 40, 41, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 60, 61, 62, 63, 65, 66, 67, 69, 70, 72, 73, 75, 76, 78, 79, 81, 82, 84, 86, 88, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 118, 121, 123, 126, 128, 131, 133, 136, 139, 142, 145, 148, 151, 154, 157, 160, 163, 166, 170, 173, 177, 180, 184, 188, 192, 195, 199, 203, 207, 212, 216, 220, 225, 229, 234, 239, 244, 249, 254, 259, 264, 269, 275, 280, 286, 292, 298, 304, 310, 316, 322, 329, 336, 342, 349, 356, 364, 371, 378, 386, 394, 402, 410, 418, 427, 435, 444, 453, 462, 472, 481, 491, 501, 511, 521, 532, 543, 554, 565, 576, 588, 600, 612, 624, 637, 650, 663, 676, 690, 704, 718, 733, 748, 763, 778, 794, 810, 826, 843, 860, 877, 895, 913, 932, 951, 970, 989, 1009, 1030, 1051, 1072, 1093, 1116, 1138, 1161, 1185, 1208, 1233, 1258, 1283, 1309, 1336, 1363, 1390, 1418, 1447, 1476, 1506, 1536, 1567, 1599, 1631, 1664, 1698, 1732, 1767, 1803, 1840, 1877, 1915, 1953, 1993, 2033, 2074, 2116, 2159, 2202, 2247, 2292, 2339, 2386, 2434, 2483, 2533, 2585, 2637, 2690, 2744, 2800, 2856, 2914, 2973, 3033, 3094, 3157, 3221, 3286, 3352, 3420, 3489, 3560, 3631, 3705, 3780, 3856, 3934, 4013, 4095, 4013, 3934, 3856, 3780, 3705, 3631, 3560, 3489, 3420, 3352, 3286, 3221, 3157, 3094, 3033, 2973, 2914, 2856, 2800, 2744, 2690, 2637, 2585, 2533, 2483, 2434, 2386, 2339, 2292, 2247, 2202, 2159, 2116, 2074, 2033, 1993, 1953, 1915, 1877, 1840, 1803, 1767, 1732, 1698, 1664, 1631, 1599, 1567, 1536, 1506, 1476, 1447, 1418, 1390, 1363, 1336, 1309, 1283, 1258, 1233, 1208, 1185, 1161, 1138, 1116, 1093, 1072, 1051, 1030, 1009, 989, 970, 951, 932, 913, 895, 877, 860, 843, 826, 810, 794, 778, 763, 748, 733, 718, 704, 690, 676, 663, 650, 637, 624, 612, 600, 588, 576, 565, 554, 543, 532, 521, 511, 501, 491, 481, 472, 462, 453, 444, 435, 427, 418, 410, 402, 394, 386, 378, 371, 364, 356, 349, 342, 336, 329, 322, 316, 310, 304, 298, 292, 286, 280, 275, 269, 264, 259, 254, 249, 244, 239, 234, 229, 225, 220, 216, 212, 207, 203, 199, 195, 192, 188, 184, 180, 177, 173, 170, 166, 163, 160, 157, 154, 151, 148, 145, 142, 139, 136, 133, 131, 128, 126, 123, 121, 118, 116, 114, 111, 109, 107, 105, 103, 101, 99, 97, 95, 93, 91, 89, 88, 86, 84, 82, 81, 79, 78, 76, 75, 73, 72, 70, 69, 67, 66, 65, 63, 62, 61, 60, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 41, 40, 39, 38, 37, 37, 36, 35, 35, 34, 33, 33, 32, 31, 31, 30, 29, 29, 28, 28, 27, 27, 26, 25, 25, 24, 24, 23, 23, 23, 22, 22, 21, 21, 20, 20, 20, 19, 19, 18, 18, 18, 17, 17, 17, 16, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, 13, 13, 12, 12, 12, 12, 11, 11, 11, 11, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

				printf("*******SRAM*******\n\r");

				update_sram(sram_ramp);
				update_regs( reg_addr,sramramp_regval);

//				update_sram(sram_gaussian);
//				update_regs( reg_addr,gaussian_regval);

		// update_regs( reg_addr,ddssine_regval );   //dds sine wave   working

				 start_pattern();


}

void update_sram( int16_t sram_ramp_data[] )
{

//	uint16_t s=0,s1=0,s2=0,s3=0,s4=0,s6=0;
//	int16_t s5=0,s7=0;

///////////////////////////////////sram write mode
	sram_write();
	//HAL_Delay(1000);
///////////////////////////////////sram store value
	uint16_t sram_add=0x6000;

	int16_t sram_datashiftleft = 0;
	for(int i=0;i<4096;i++){
		uint16_t s4=0;
			int16_t s5=0;
		int16_t sram_datashiftleft = sram_ramp_data[i] << 4;

		HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_RESET);  // Activate CS
		s4=HAL_SPI_Transmit(&hspi4, (uint16_t*)&sram_add+i, sizeof(sram_add+i), 100);    // spi transmit sram address to dac ad9106 one by one
		s5=HAL_SPI_Transmit(&hspi4, (int16_t*)&sram_datashiftleft, sizeof(sram_datashiftleft), 100);    // spi transmit address to dac ad9106 one by one
		HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_SET);	// Deactivate CS
		printf("3s=%d s=%d sram_reg_addr=%x, sram_reg_value=%x\n\r",s4,s5,sram_add+i,sram_datashiftleft); // check transmitted address/value and declare address/value same or not
		delay_us(50);
//		HAL_Delay(100);

//		HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_RESET);    // Activate CS
//		s6=HAL_SPI_Transmit(&hspi4, (uint16_t*)&read_sram_addr, 1, 100);		// spi transmit read address
//		s7=HAL_SPI_Receive(&hspi4,(int16_t*)&Read_sram_Value,1, 100);		// spi receive value for check read value right or not
//		HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_SET);		// Deactivate CS
//		printf("4s=%d s=%d read_sram_addr=%x,read_sram_value=%d\n\n\r",s6,s7,read_sram_addr,Read_sram_Value);
//		delay_us(10);
////		HAL_Delay(100);

//		HAL_GPIO_WritePin(GPIOH, Trigger1_Pin, GPIO_PIN_RESET);
//		delay_us(1000);
//			//HAL_Delay(10000);
//		HAL_GPIO_WritePin(GPIOH, Trigger1_Pin, GPIO_PIN_SET);
		}
	//HAL_Delay(1000);

///////////////////////////////sram mode PAT=0X0000
	reg_clear();
	//HAL_Delay(1000);
////////////////

//////////////////////////////sram read mode
		sram_read();
		//HAL_Delay(1000);

/////////////////////////////////////sram read store value
		       int16_t Read_sram_Value=0;
			  int16_t sram_datashiftright = 0;
				for(int j=0;j<4096;j++){
					uint16_t s6=0;
					int16_t s7=0;
					uint16_t read_sram_addr = 0x8000+sram_add+j;
				//	uint16_t read_sram_addr = sram_add+j;

					HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_RESET);    // Activate CS
					s6=HAL_SPI_Transmit(&hspi4, (uint16_t*)&read_sram_addr, sizeof(read_sram_addr), 100);		// spi transmit read address
					delay_us(100);
					s7=HAL_SPI_Receive(&hspi4,(int16_t*)&Read_sram_Value,sizeof(Read_sram_Value), 100);		// spi receive value for check read value right or not
					delay_us(100);
				//	Read_sram_Value=HAL_SPI_Transmit(&hspi4, 0, 1, 100);		// spi transmit read address
				//	delay_us(100);
					HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_SET);		// Deactivate CS
					sram_datashiftright = Read_sram_Value >> 4;
					printf("4s=%d s=%d read_sram_addr=%x,read_sram_value=%x\n\n\r",s6,s7,read_sram_addr,sram_datashiftright);
					delay_us(50);
			//		HAL_Delay(100);

//					HAL_GPIO_WritePin(GPIOH, Trigger1_Pin, GPIO_PIN_RESET);
//					delay_us(1000);
//						//HAL_Delay(10000);
//					HAL_GPIO_WritePin(GPIOH, Trigger1_Pin, GPIO_PIN_SET);
					}
	//	HAL_Delay(1000);

///////////////////////////////////////sram mode
				reg_clear();
			//	HAL_Delay(1000);


}

void update_regs(uint16_t reg_addr[],uint16_t regval[] ){

	//       uint16_t Radd[]={0x8000,0x8001,0x8002,0x8003,0x8004,0x8005,0x8006,0x8007,0x8008,0x8009,0x800A,0x800B,0x800C,0x000D,0x000E,0x801F,0x8020,0x8022,0x8023,0x8024,0x8025,0x8026,0x8027,0x8028,0x8029,0x802A,0x802B,0x802C,0x802D,0x802E,0x802F,0x8030,0x8031,0x8032,0x8033,0x8034,0x8035,0x8036,0x8037,0x803E,0x803F,0x8040,0x8041,0x8042,0x8043,0x8044,0x8045,0x8047,0x8050,0x8051,0x8052,0x8053,0x8054,0x8055,0x8056,0x8057,0x8058,0x8059,0x805A,0x805B,0x805C,0x805D,0x805E,0x805F,0x001E,0x001D};
	         //                0        1      2     3      4      5        6    7      8      9      10     11     12      13    14     15      16     17     18    19     20      21   22      23    24       25     26    27     28        29     30   31     32     33    34     35     36     37      38    39      40     41    42      43    44     45      46     47    48     49        50    51    52     53   54      55       56    57      58    59   60       61      62     63    64  65        66     67

	int i=0,j=0,k=0;
		uint16_t Read_Value=0;
		uint16_t s=0,s1=0,s2=0,s3=0;

		for(i=0,j=0;i<66;i++,j++) //////////////////////////67
		{
			uint16_t read_addr = 0x8000+reg_addr[i];
			HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_RESET);  // Activate CS
			s=HAL_SPI_Transmit(&hspi4, (uint16_t*)&reg_addr[i], 1, 100);    // spi transmit address to dac ad9106 one by one
			s1=HAL_SPI_Transmit(&hspi4,(uint16_t*)&regval[j], 1, 100);		// spi transmit value to dac ad9106 one by one
			HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_SET);	// Deactivate CS
			printf("3s=%d s=%d reg_addr=%x, reg_addr_value=%x\n\r",s,s1,reg_addr[i],regval[j]); // check transmitted address/value and declare address/value same or not
			delay_us(50);
	//		HAL_Delay(100);

			HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_RESET);    // Activate CS
		//	s2=HAL_SPI_Transmit(&hspi4, (uint16_t*)&Radd[k], 1, 100);		// spi transmit read address
			s2=HAL_SPI_Transmit(&hspi4, (uint16_t*)&read_addr, 1, 100);		// spi transmit read address
			s3=HAL_SPI_Receive(&hspi4,(uint16_t*)&Read_Value,1, 100);		// spi receive value for check read value right or not
			HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_SET);		// Deactivate CS
		//	printf("4s=%d s=%d R- A=%x,V=%x\n\n\r",s2,s3,Radd[k],Read_Value);
			printf("4s=%d s=%d read_reg_addr=%x,read_reg_addr_value=%x\n\n\r",s2,s3,read_addr,Read_Value);
			delay_us(50);
	//		HAL_Delay(100);

//		HAL_GPIO_WritePin(GPIOH,Trigger1_Pin, GPIO_PIN_RESET);   /////////////////remove comment for sawtooth
//		delay_us(1000);
//	//	HAL_Delay(5000);
//		HAL_GPIO_WritePin(GPIOH,Trigger1_Pin, GPIO_PIN_SET);
		}
	//	HAL_Delay(10000);
}
void sram_write(void){
	uint16_t s=0,s1=0,s2=0,s3=0;

	  uint16_t reg_addr=0x001E,valu=0x04;       //PAT_status reg for write=0x0004
		  uint16_t Radd_PAT=0x801E;
		   uint16_t Read_Value=0;
		HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_RESET);    // Activate CS
		s=HAL_SPI_Transmit(&hspi4, (uint16_t*)&reg_addr, 1, 100);			// load address of PAT_Status_Reg
		s1=HAL_SPI_Transmit(&hspi4,(uint16_t*)&valu, 1, 100);			// load value in PAT Status reg run bit high
		HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_SET);    // Deactivate CS
		printf("1s=%d s=%d PAT_reg_addr=%x, PAT_reg_value=%x\n\r",s,s1,reg_addr,valu);
		delay_us(500);
	//		HAL_Delay(500);

		HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_RESET);
		s2=HAL_SPI_Transmit(&hspi4, (uint16_t*)&Radd_PAT, 1, 100);
		s3=HAL_SPI_Receive(&hspi4,(uint16_t*)&Read_Value,1, 100);
		HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_SET);
		printf("2s=%d s=%d Radd_PAT=%x,Radd_PAT_Value=%x\n\n\r",s2,s3,Radd_PAT,Read_Value);
		delay_us(500);
	//		HAL_Delay(500);
//		HAL_GPIO_WritePin(GPIOH, Trigger1_Pin, GPIO_PIN_RESET);
//		delay_us(1000);
//		//	HAL_Delay(10000);
//		HAL_GPIO_WritePin(GPIOH, Trigger1_Pin, GPIO_PIN_SET);
//	//	HAL_Delay(10000);
}

void sram_read(void){
	uint16_t s=0,s1=0,s2=0,s3=0;
	uint16_t reg_addr=0x001E,valu=0x000C;       //PAT_status reg for read=0x000c
	uint16_t Radd_PAT=0x801E;
	uint16_t Read_Value=0;
		HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_RESET);    // Activate CS
		s=HAL_SPI_Transmit(&hspi4, (uint16_t*)&reg_addr, 1, 100);			// load address of PAT_Status_Reg
		s1=HAL_SPI_Transmit(&hspi4,(uint16_t*)&valu, 1, 100);			// load value in PAT Status reg run bit high
		HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_SET);    // Deactivate CS
		printf("1s=%d s=%d PAT_reg_addr=%x, PAT_reg_value=%x\n\r",s,s1,reg_addr,valu);
		delay_us(50);
	//		HAL_Delay(500);

		HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_RESET);
		s2=HAL_SPI_Transmit(&hspi4, (uint16_t*)&Radd_PAT, 1, 100);
		s3=HAL_SPI_Receive(&hspi4,(uint16_t*)&Read_Value,1, 100);
		HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_SET);
		printf("2s=%d s=%d Radd_PAT=%x,Radd_PAT_Value=%x\n\n\r",s2,s3,Radd_PAT,Read_Value);
		delay_us(50);
	//		HAL_Delay(500);
//		HAL_GPIO_WritePin(GPIOH, Trigger1_Pin, GPIO_PIN_RESET);
//		delay_us(1000);
//			//HAL_Delay(10000);
//		HAL_GPIO_WritePin(GPIOH, Trigger1_Pin, GPIO_PIN_SET);
//		//HAL_Delay(10000);

}
void reg_clear(void){
	uint16_t s=0,s1=0,s2=0,s3=0;
	uint16_t reg_addr=0x001E,valu=0x10;       //PAT_status reg for END write=0x0000
		uint16_t Radd_PAT=0x801E;
		uint16_t Read_Value=0;
			HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_RESET);    // Activate CS
			s=HAL_SPI_Transmit(&hspi4, (uint16_t*)&reg_addr, 1, 100);			// load address of PAT_Status_Reg
			s1=HAL_SPI_Transmit(&hspi4,(uint16_t*)&valu, 1, 100);			// load value in PAT Status reg run bit high
			HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_SET);    // Deactivate CS
			printf("1s=%d s=%d PAT_reg_addr=%x, PAT_reg_value=%x\n\r",s,s1,reg_addr,valu);
			delay_us(50);
		//		HAL_Delay(500);

			HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_RESET);
			s2=HAL_SPI_Transmit(&hspi4, (uint16_t*)&Radd_PAT, 1, 100);
			s3=HAL_SPI_Receive(&hspi4,(uint16_t*)&Read_Value,1, 100);
			HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_SET);
			printf("2s=%d s=%d Radd_PAT=%x,Radd_PAT_Value=%x\n\n\r",s2,s3,Radd_PAT,Read_Value);
			delay_us(50);
		//		HAL_Delay(500);
//			HAL_GPIO_WritePin(GPIOH, Trigger1_Pin, GPIO_PIN_RESET);
//			delay_us(1000);
//				//HAL_Delay(10000);
//			HAL_GPIO_WritePin(GPIOH, Trigger1_Pin, GPIO_PIN_SET);
//
//	//		HAL_Delay(1000);

}

void start_pattern(void){

					uint16_t reg_addr=0x001E,valu=0x01;       //PAT_status reg for RUN=0x0001
					uint16_t Radd_PAT=0x801E,Read_Value=0;
					uint16_t s=0,s1=0,s2=0,s3=0;

					HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_RESET);    // Activate CS
					s=HAL_SPI_Transmit(&hspi4, (uint16_t*)&reg_addr, 1, 100);			// load address of PAT_Status_Reg
					s1=HAL_SPI_Transmit(&hspi4,(uint16_t*)&valu, 1, 100);			// load value in PAT Status reg run bit high
					HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_SET);    // Deactivate CS
					printf("1s=%d s=%d PAT_reg_addr=%x, PAT_reg_value=%x\n\r",s,s1,reg_addr,valu);
					delay_us(50);
			//		HAL_Delay(500);

					HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_RESET);
					s2=HAL_SPI_Transmit(&hspi4, (uint16_t*)&Radd_PAT, 1, 100);
					s3=HAL_SPI_Receive(&hspi4,(uint16_t*)&Read_Value,1, 100);
					HAL_GPIO_WritePin(CS1_GPIO_Port, CS1_Pin, GPIO_PIN_SET);
					printf("2s=%d s=%d Radd_PAT=%x,Radd_PAT_Value=%x\n\n\r",s2,s3,Radd_PAT,Read_Value);
					delay_us(50);
					HAL_Delay(500);

					HAL_GPIO_WritePin(GPIOH, Trigger1_Pin, GPIO_PIN_RESET);      //start pattern
					delay_us(5000);
						HAL_Delay(10000);
					HAL_GPIO_WritePin(GPIOH, Trigger1_Pin, GPIO_PIN_SET);		 // stop pattern
				//	delay_us(5000);
				//	HAL_Delay(10000);
}







2) Reading data to the SRAM: For writing data to the SRAM select PAT_STATUS REGISTER 1E=0X0C Read Mode. I read data that from SRAM address 0xE000-0xEFFF That calculate by 8000+starting sram address... as per code example of AD910x - Library files for EVAL-AD910x | Mbed .

but i reading value not same as write value. i attach write value output

and read value output

and haven't got expected ramp waveform 

I have thoroughly reviewed the datasheets, but it appears that I may be missing some crucial steps or misinterpreting certain instructions. I would greatly appreciate it if you could provide me with guidance and clarification on the correct procedure for performing write and read operations on the SRAM of the AD9106 devices.

If possible, could you please provide me with detailed step-by-step instructions, highlighting any potential pitfalls or commonly overlooked aspects of the process? Additionally, if there are any specific register settings or considerations I should be aware of, kindly provide those details as well.

I understand that your team has extensive expertise in working with these devices, and I am confident that your guidance will help me overcome the challenges I am currently facing.

Parents
  • Hi  ,

    Please refer to FAQ 4 in this link: AD9106 / AD9102 Low-Power DAC and Waveform Generator: FAQs 

    Please see pseudocode below and compare it to your code: 

    1. Set initial values of IOs.
         ○ RESET - logic high
         ○ TRIGGER - logic high
         ○ CS - logic high

    2. Set SPI frequency and mode.
         ○ Clock is logic low when idle or leads with a rising edge and trails with a falling edge.
         ○ Data logic level should be valid during the clock rising edge and before the clock falling edge.

    3. Pulse RESET to logic low then high to reset register values.

    4. Proceed with register read or write. (AD9102: page 18, AD9106: pages 22-23 of datasheet)
         a. If loading a pattern from SRAM, write data on SRAM registers first. (AD9102: page 23, AD9106: page 27 of datasheet)
              i. To write data: Enable MEM_ACCESS bit in 0x1E register. Write left-justified data to SRAM registers, 0x6000 to 0x6FFF. Disable MEM_ACCESS bit.
              ii. To read data: Enable BUF_READ and MEM_ACCESS bits in 0x1E register. After reading data from SRAM registers, disable BUF_READ and MEM_ACCESS bits.
         b. Write on SPI registers. Update last bits of registers 0x1E (RUN bit) and 0x1D (RAMUPDATE bit) at the end of the write sequence.

    Regards,

    Marco

Reply
  • Hi  ,

    Please refer to FAQ 4 in this link: AD9106 / AD9102 Low-Power DAC and Waveform Generator: FAQs 

    Please see pseudocode below and compare it to your code: 

    1. Set initial values of IOs.
         ○ RESET - logic high
         ○ TRIGGER - logic high
         ○ CS - logic high

    2. Set SPI frequency and mode.
         ○ Clock is logic low when idle or leads with a rising edge and trails with a falling edge.
         ○ Data logic level should be valid during the clock rising edge and before the clock falling edge.

    3. Pulse RESET to logic low then high to reset register values.

    4. Proceed with register read or write. (AD9102: page 18, AD9106: pages 22-23 of datasheet)
         a. If loading a pattern from SRAM, write data on SRAM registers first. (AD9102: page 23, AD9106: page 27 of datasheet)
              i. To write data: Enable MEM_ACCESS bit in 0x1E register. Write left-justified data to SRAM registers, 0x6000 to 0x6FFF. Disable MEM_ACCESS bit.
              ii. To read data: Enable BUF_READ and MEM_ACCESS bits in 0x1E register. After reading data from SRAM registers, disable BUF_READ and MEM_ACCESS bits.
         b. Write on SPI registers. Update last bits of registers 0x1E (RUN bit) and 0x1D (RAMUPDATE bit) at the end of the write sequence.

    Regards,

    Marco

Children