我正在做作业,给你上传一下我正在做的程序.
如果使用,请注明作者(jmjpc),
说明:1、正弦值用14bit量化表示,但在使用时只取了高12位。
2、累加器Accum(29)没用,Accum(28)表正负。
3、累加器的步进值从65536到16744448可选。
4、reset信号高电平是复位。
[此贴子已经被作者于2009-5-4 22:00:00编辑过]
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
-- -----------------------------------------------
Entity DDFS is
-- -----------------------------------------------
Port ( CLK : in std_logic;
reset : in std_logic;
Freq_Data : in std_logic_vector (9 downto 0);
Dout : out std_logic_vector (11 downto 0);
Dac_clk : out std_logic
);
end DDFS;
-- -----------------------------------------------
Architecture RTL of DDFS is
-- -----------------------------------------------
signal Address : std_logic_vector (10 downto 0);
signal Result : std_logic_vector (15 downto 0);
signal Accum : std_logic_vector(29 downto 0):="000000000000000000000000000000";
signal Freq_Data_buf : std_logic_vector (27 downto 0):="0000000000000000000000000000";
signal Sign : std_logic;
signal dac_clk_buf : std_logic :='0';
signal Dout_buf : std_logic_vector (10 downto 0);
signal n :integer :=1024;
type Rom2048x16 is array (0 to 2047) of std_logic_vector (15 downto 0); -- 0 to 2**Address'length - 1
constant Sinus_Rom : Rom2048x16 := (
x"0000",x"000F",x"001F",x"002E",x"003D",x"004D",x"005C",x"006B",x"007B",x"008A",x"0099",x"00A9",x"00B8",x"00C7",x"00D7",x"00E6",
x"00F5",x"0105",x"0114",x"0123",x"0133",x"0142",x"0151",x"0161",x"0170",x"017F",x"018F",x"019E",x"01AD",x"01BD",x"01CC",x"01DB",
x"01EB",x"01FA",x"0209",x"0219",x"0228",x"0237",x"0247",x"0256",x"0265",x"0275",x"0284",x"0293",x"02A2",x"02B2",x"02C1",x"02D0",
x"02E0",x"02EF",x"02FE",x"030E",x"031D",x"032C",x"033B",x"034B",x"035A",x"0369",x"0379",x"0388",x"0397",x"03A6",x"03B6",x"03C5",
x"03D4",x"03E3",x"03F3",x"0402",x"0411",x"0420",x"0430",x"043F",x"044E",x"045D",x"046D",x"047C",x"048B",x"049A",x"04AA",x"04B9",
x"04C8",x"04D7",x"04E7",x"04F6",x"0505",x"0514",x"0523",x"0533",x"0542",x"0551",x"0560",x"056F",x"057F",x"058E",x"059D",x"05AC",
x"05BB",x"05CA",x"05DA",x"05E9",x"05F8",x"0607",x"0616",x"0625",x"0635",x"0644",x"0653",x"0662",x"0671",x"0680",x"068F",x"069F",
x"06AE",x"06BD",x"06CC",x"06DB",x"06EA",x"06F9",x"0708",x"0717",x"0726",x"0735",x"0745",x"0754",x"0763",x"0772",x"0781",x"0790",
x"079F",x"07AE",x"07BD",x"07CC",x"07DB",x"07EA",x"07F9",x"0808",x"0817",x"0826",x"0835",x"0844",x"0853",x"0862",x"0871",x"0880",
x"088F",x"089E",x"08AD",x"08BC",x"08CB",x"08DA",x"08E9",x"08F8",x"0907",x"0916",x"0924",x"0933",x"0942",x"0951",x"0960",x"096F",
x"097E",x"098D",x"099C",x"09AA",x"09B9",x"09C8",x"09D7",x"09E6",x"09F5",x"0A03",x"0A12",x"0A21",x"0A30",x"0A3F",x"0A4E",x"0A5C",
x"0A6B",x"0A7A",x"0A89",x"0A97",x"0AA6",x"0AB5",x"0AC4",x"0AD2",x"0AE1",x"0AF0",x"0AFF",x"0B0D",x"0B1C",x"0B2B",x"0B39",x"0B48",
x"0B57",x"0B66",x"0B74",x"0B83",x"0B92",x"0BA0",x"0BAF",x"0BBD",x"0BCC",x"0BDB",x"0BE9",x"0BF8",x"0C06",x"0C15",x"0C24",x"0C32",
x"0C41",x"0C4F",x"0C5E",x"0C6C",x"0C7B",x"0C8A",x"0C98",x"0CA7",x"0CB5",x"0CC4",x"0CD2",x"0CE1",x"0CEF",x"0CFE",x"0D0C",x"0D1A",
x"0D29",x"0D37",x"0D46",x"0D54",x"0D63",x"0D71",x"0D7F",x"0D8E",x"0D9C",x"0DAB",x"0DB9",x"0DC7",x"0DD6",x"0DE4",x"0DF2",x"0E01",
x"0E0F",x"0E1D",x"0E2C",x"0E3A",x"0E48",x"0E56",x"0E65",x"0E73",x"0E81",x"0E8F",x"0E9E",x"0EAC",x"0EBA",x"0EC8",x"0ED6",x"0EE5",
x"0EF3",x"0F01",x"0F0F",x"0F1D",x"0F2B",x"0F3A",x"0F48",x"0F56",x"0F64",x"0F72",x"0F80",x"0F8E",x"0F9C",x"0FAA",x"0FB8",x"0FC6",
x"0FD4",x"0FE2",x"0FF0",x"0FFE",x"100C",x"101A",x"1028",x"1036",x"1044",x"1052",x"1060",x"106E",x"107C",x"108A",x"1098",x"10A6",
x"10B4",x"10C1",x"10CF",x"10DD",x"10EB",x"10F9",x"1107",x"1114",x"1122",x"1130",x"113E",x"114B",x"1159",x"1167",x"1175",x"1182",
x"1190",x"119E",x"11AB",x"11B9",x"11C7",x"11D4",x"11E2",x"11F0",x"11FD",x"120B",x"1219",x"1226",x"1234",x"1241",x"124F",x"125C",
x"126A",x"1277",x"1285",x"1293",x"12A0",x"12AD",x"12BB",x"12C8",x"12D6",x"12E3",x"12F1",x"12FE",x"130C",x"1319",x"1326",x"1334",
x"1341",x"134E",x"135C",x"1369",x"1376",x"1384",x"1391",x"139E",x"13AB",x"13B9",x"13C6",x"13D3",x"13E0",x"13EE",x"13FB",x"1408",
x"1415",x"1422",x"142F",x"143C",x"144A",x"1457",x"1464",x"1471",x"147E",x"148B",x"1498",x"14A5",x"14B2",x"14BF",x"14CC",x"14D9",
x"14E6",x"14F3",x"1500",x"150D",x"151A",x"1527",x"1534",x"1540",x"154D",x"155A",x"1567",x"1574",x"1581",x"158D",x"159A",x"15A7",
x"15B4",x"15C0",x"15CD",x"15DA",x"15E7",x"15F3",x"1600",x"160D",x"1619",x"1626",x"1633",x"163F",x"164C",x"1658",x"1665",x"1672",
x"167E",x"168B",x"1697",x"16A4",x"16B0",x"16BD",x"16C9",x"16D6",x"16E2",x"16EE",x"16FB",x"1707",x"1714",x"1720",x"172C",x"1739",
x"1745",x"1751",x"175E",x"176A",x"1776",x"1782",x"178F",x"179B",x"17A7",x"17B3",x"17BF",x"17CC",x"17D8",x"17E4",x"17F0",x"17FC",
x"1808",x"1814",x"1820",x"182D",x"1839",x"1845",x"1851",x"185D",x"1869",x"1875",x"1881",x"188C",x"1898",x"18A4",x"18B0",x"18BC",
x"18C8",x"18D4",x"18E0",x"18EB",x"18F7",x"1903",x"190F",x"191B",x"1926",x"1932",x"193E",x"1949",x"1955",x"1961",x"196C",x"1978",
x"1984",x"198F",x"199B",x"19A7",x"19B2",x"19BE",x"19C9",x"19D5",x"19E0",x"19EC",x"19F7",x"1A03",x"1A0E",x"1A19",x"1A25",x"1A30",
x"1A3C",x"1A47",x"1A52",x"1A5E",x"1A69",x"1A74",x"1A80",x"1A8B",x"1A96",x"1AA1",x"1AAC",x"1AB8",x"1AC3",x"1ACE",x"1AD9",x"1AE4",
x"1AEF",x"1AFB",x"1B06",x"1B11",x"1B1C",x"1B27",x"1B32",x"1B3D",x"1B48",x"1B53",x"1B5E",x"1B69",x"1B74",x"1B7E",x"1B89",x"1B94",
x"1B9F",x"1BAA",x"1BB5",x"1BC0",x"1BCA",x"1BD5",x"1BE0",x"1BEB",x"1BF5",x"1C00",x"1C0B",x"1C15",x"1C20",x"1C2B",x"1C35",x"1C40",
x"1C4A",x"1C55",x"1C60",x"1C6A",x"1C75",x"1C7F",x"1C8A",x"1C94",x"1C9F",x"1CA9",x"1CB3",x"1CBE",x"1CC8",x"1CD3",x"1CDD",x"1CE7",
x"1CF2",x"1CFC",x"1D06",x"1D10",x"1D1B",x"1D25",x"1D2F",x"1D39",x"1D43",x"1D4E",x"1D58",x"1D62",x"1D6C",x"1D76",x"1D80",x"1D8A",
x"1D94",x"1D9E",x"1DA8",x"1DB2",x"1DBC",x"1DC6",x"1DD0",x"1DDA",x"1DE4",x"1DEE",x"1DF7",x"1E01",x"1E0B",x"1E15",x"1E1F",x"1E28",
x"1E32",x"1E3C",x"1E46",x"1E4F",x"1E59",x"1E63",x"1E6C",x"1E76",x"1E7F",x"1E89",x"1E93",x"1E9C",x"1EA6",x"1EAF",x"1EB9",x"1EC2",
x"1ECB",x"1ED5",x"1EDE",x"1EE8",x"1EF1",x"1EFA",x"1F04",x"1F0D",x"1F16",x"1F20",x"1F29",x"1F32",x"1F3B",x"1F45",x"1F4E",x"1F57",
x"1F60",x"1F69",x"1F72",x"1F7B",x"1F84",x"1F8E",x"1F97",x"1FA0",x"1FA9",x"1FB2",x"1FBB",x"1FC3",x"1FCC",x"1FD5",x"1FDE",x"1FE7",
x"1FF0",x"1FF9",x"2001",x"200A",x"2013",x"201C",x"2024",x"202D",x"2036",x"203F",x"2047",x"2050",x"2058",x"2061",x"206A",x"2072",
x"207B",x"2083",x"208C",x"2094",x"209D",x"20A5",x"20AD",x"20B6",x"20BE",x"20C7",x"20CF",x"20D7",x"20E0",x"20E8",x"20F0",x"20F8",
x"2101",x"2109",x"2111",x"2119",x"2121",x"2129",x"2131",x"2139",x"2142",x"214A",x"2152",x"215A",x"2162",x"216A",x"2171",x"2179",
x"2181",x"2189",x"2191",x"2199",x"21A1",x"21A8",x"21B0",x"21B8",x"21C0",x"21C7",x"21CF",x"21D7",x"21DE",x"21E6",x"21EE",x"21F5",
x"21FD",x"2204",x"220C",x"2213",x"221B",x"2222",x"222A",x"2231",x"2239",x"2240",x"2247",x"224F",x"2256",x"225D",x"2265",x"226C",
x"2273",x"227A",x"2282",x"2289",x"2290",x"2297",x"229E",x"22A5",x"22AC",x"22B3",x"22BA",x"22C1",x"22C8",x"22CF",x"22D6",x"22DD",
x"22E4",x"22EB",x"22F2",x"22F9",x"2300",x"2306",x"230D",x"2314",x"231B",x"2321",x"2328",x"232F",x"2335",x"233C",x"2343",x"2349",
x"2350",x"2356",x"235D",x"2363",x"236A",x"2370",x"2377",x"237D",x"2384",x"238A",x"2390",x"2397",x"239D",x"23A3",x"23AA",x"23B0",
x"23B6",x"23BC",x"23C2",x"23C9",x"23CF",x"23D5",x"23DB",x"23E1",x"23E7",x"23ED",x"23F3",x"23F9",x"23FF",x"2405",x"240B",x"2411",
x"2417",x"241D",x"2422",x"2428",x"242E",x"2434",x"243A",x"243F",x"2445",x"244B",x"2450",x"2456",x"245C",x"2461",x"2467",x"246C",
x"2472",x"2477",x"247D",x"2482",x"2488",x"248D",x"2493",x"2498",x"249D",x"24A3",x"24A8",x"24AD",x"24B3",x"24B8",x"24BD",x"24C2",
x"24C7",x"24CD",x"24D2",x"24D7",x"24DC",x"24E1",x"24E6",x"24EB",x"24F0",x"24F5",x"24FA",x"24FF",x"2504",x"2509",x"250E",x"2512",
x"2517",x"251C",x"2521",x"2526",x"252A",x"252F",x"2534",x"2538",x"253D",x"2542",x"2546",x"254B",x"254F",x"2554",x"2558",x"255D",
x"2561",x"2566",x"256A",x"256F",x"2573",x"2577",x"257C",x"2580",x"2584",x"2589",x"258D",x"2591",x"2595",x"2599",x"259E",x"25A2",
x"25A6",x"25AA",x"25AE",x"25B2",x"25B6",x"25BA",x"25BE",x"25C2",x"25C6",x"25CA",x"25CE",x"25D1",x"25D5",x"25D9",x"25DD",x"25E1",
x"25E4",x"25E8",x"25EC",x"25EF",x"25F3",x"25F7",x"25FA",x"25FE",x"2601",x"2605",x"2608",x"260C",x"260F",x"2613",x"2616",x"261A",
x"261D",x"2620",x"2624",x"2627",x"262A",x"262E",x"2631",x"2634",x"2637",x"263A",x"263D",x"2641",x"2644",x"2647",x"264A",x"264D",
x"2650",x"2653",x"2656",x"2659",x"265C",x"265F",x"2661",x"2664",x"2667",x"266A",x"266D",x"266F",x"2672",x"2675",x"2677",x"267A",
x"267D",x"267F",x"2682",x"2685",x"2687",x"268A",x"268C",x"268F",x"2691",x"2693",x"2696",x"2698",x"269B",x"269D",x"269F",x"26A2",
x"26A4",x"26A6",x"26A8",x"26AA",x"26AD",x"26AF",x"26B1",x"26B3",x"26B5",x"26B7",x"26B9",x"26BB",x"26BD",x"26BF",x"26C1",x"26C3",
x"26C5",x"26C7",x"26C9",x"26CA",x"26CC",x"26CE",x"26D0",x"26D1",x"26D3",x"26D5",x"26D6",x"26D8",x"26DA",x"26DB",x"26DD",x"26DE",
x"26E0",x"26E1",x"26E3",x"26E4",x"26E6",x"26E7",x"26E8",x"26EA",x"26EB",x"26EC",x"26EE",x"26EF",x"26F0",x"26F1",x"26F3",x"26F4",
x"26F5",x"26F6",x"26F7",x"26F8",x"26F9",x"26FA",x"26FB",x"26FC",x"26FD",x"26FE",x"26FF",x"2700",x"2701",x"2702",x"2702",x"2703",
x"2704",x"2705",x"2705",x"2706",x"2707",x"2707",x"2708",x"2709",x"2709",x"270A",x"270A",x"270B",x"270B",x"270C",x"270C",x"270D",
x"270D",x"270D",x"270E",x"270E",x"270E",x"270F",x"270F",x"270F",x"270F",x"270F",x"2710",x"2710",x"2710",x"2710",x"2710",x"2710",
x"2710",x"2710",x"2710",x"2710",x"2710",x"2710",x"2710",x"270F",x"270F",x"270F",x"270F",x"270F",x"270E",x"270E",x"270E",x"270D",
x"270D",x"270D",x"270C",x"270C",x"270B",x"270B",x"270A",x"270A",x"2709",x"2709",x"2708",x"2707",x"2707",x"2706",x"2705",x"2705",
x"2704",x"2703",x"2702",x"2702",x"2701",x"2700",x"26FF",x"26FE",x"26FD",x"26FC",x"26FB",x"26FA",x"26F9",x"26F8",x"26F7",x"26F6",
x"26F5",x"26F4",x"26F3",x"26F1",x"26F0",x"26EF",x"26EE",x"26EC",x"26EB",x"26EA",x"26E8",x"26E7",x"26E6",x"26E4",x"26E3",x"26E1",
x"26E0",x"26DE",x"26DD",x"26DB",x"26DA",x"26D8",x"26D6",x"26D5",x"26D3",x"26D1",x"26D0",x"26CE",x"26CC",x"26CA",x"26C9",x"26C7",
x"26C5",x"26C3",x"26C1",x"26BF",x"26BD",x"26BB",x"26B9",x"26B7",x"26B5",x"26B3",x"26B1",x"26AF",x"26AD",x"26AA",x"26A8",x"26A6",
x"26A4",x"26A2",x"269F",x"269D",x"269B",x"2698",x"2696",x"2693",x"2691",x"268F",x"268C",x"268A",x"2687",x"2685",x"2682",x"267F",
x"267D",x"267A",x"2677",x"2675",x"2672",x"266F",x"266D",x"266A",x"2667",x"2664",x"2661",x"265F",x"265C",x"2659",x"2656",x"2653",
x"2650",x"264D",x"264A",x"2647",x"2644",x"2641",x"263D",x"263A",x"2637",x"2634",x"2631",x"262E",x"262A",x"2627",x"2624",x"2620",
x"261D",x"261A",x"2616",x"2613",x"260F",x"260C",x"2608",x"2605",x"2601",x"25FE",x"25FA",x"25F7",x"25F3",x"25EF",x"25EC",x"25E8",
x"25E4",x"25E1",x"25DD",x"25D9",x"25D5",x"25D1",x"25CE",x"25CA",x"25C6",x"25C2",x"25BE",x"25BA",x"25B6",x"25B2",x"25AE",x"25AA",
x"25A6",x"25A2",x"259E",x"2599",x"2595",x"2591",x"258D",x"2589",x"2584",x"2580",x"257C",x"2577",x"2573",x"256F",x"256A",x"2566",
x"2561",x"255D",x"2558",x"2554",x"254F",x"254B",x"2546",x"2542",x"253D",x"2538",x"2534",x"252F",x"252A",x"2526",x"2521",x"251C",
x"2517",x"2512",x"250E",x"2509",x"2504",x"24FF",x"24FA",x"24F5",x"24F0",x"24EB",x"24E6",x"24E1",x"24DC",x"24D7",x"24D2",x"24CD",
x"24C7",x"24C2",x"24BD",x"24B8",x"24B3",x"24AD",x"24A8",x"24A3",x"249D",x"2498",x"2493",x"248D",x"2488",x"2482",x"247D",x"2477",
x"2472",x"246C",x"2467",x"2461",x"245C",x"2456",x"2450",x"244B",x"2445",x"243F",x"243A",x"2434",x"242E",x"2428",x"2422",x"241D",
x"2417",x"2411",x"240B",x"2405",x"23FF",x"23F9",x"23F3",x"23ED",x"23E7",x"23E1",x"23DB",x"23D5",x"23CF",x"23C9",x"23C2",x"23BC",
x"23B6",x"23B0",x"23AA",x"23A3",x"239D",x"2397",x"2390",x"238A",x"2384",x"237D",x"2377",x"2370",x"236A",x"2363",x"235D",x"2356",
x"2350",x"2349",x"2343",x"233C",x"2335",x"232F",x"2328",x"2321",x"231B",x"2314",x"230D",x"2306",x"2300",x"22F9",x"22F2",x"22EB",
x"22E4",x"22DD",x"22D6",x"22CF",x"22C8",x"22C1",x"22BA",x"22B3",x"22AC",x"22A5",x"229E",x"2297",x"2290",x"2289",x"2282",x"227A",
x"2273",x"226C",x"2265",x"225D",x"2256",x"224F",x"2247",x"2240",x"2239",x"2231",x"222A",x"2222",x"221B",x"2213",x"220C",x"2204",
x"21FD",x"21F5",x"21EE",x"21E6",x"21DE",x"21D7",x"21CF",x"21C7",x"21C0",x"21B8",x"21B0",x"21A8",x"21A1",x"2199",x"2191",x"2189",
x"2181",x"2179",x"2171",x"216A",x"2162",x"215A",x"2152",x"214A",x"2142",x"2139",x"2131",x"2129",x"2121",x"2119",x"2111",x"2109",
x"2101",x"20F8",x"20F0",x"20E8",x"20E0",x"20D7",x"20CF",x"20C7",x"20BE",x"20B6",x"20AD",x"20A5",x"209D",x"2094",x"208C",x"2083",
x"207B",x"2072",x"206A",x"2061",x"2058",x"2050",x"2047",x"203F",x"2036",x"202D",x"2024",x"201C",x"2013",x"200A",x"2001",x"1FF9",
x"1FF0",x"1FE7",x"1FDE",x"1FD5",x"1FCC",x"1FC3",x"1FBB",x"1FB2",x"1FA9",x"1FA0",x"1F97",x"1F8E",x"1F84",x"1F7B",x"1F72",x"1F69",
x"1F60",x"1F57",x"1F4E",x"1F45",x"1F3B",x"1F32",x"1F29",x"1F20",x"1F16",x"1F0D",x"1F04",x"1EFA",x"1EF1",x"1EE8",x"1EDE",x"1ED5",
x"1ECB",x"1EC2",x"1EB9",x"1EAF",x"1EA6",x"1E9C",x"1E93",x"1E89",x"1E7F",x"1E76",x"1E6C",x"1E63",x"1E59",x"1E4F",x"1E46",x"1E3C",
x"1E32",x"1E28",x"1E1F",x"1E15",x"1E0B",x"1E01",x"1DF7",x"1DEE",x"1DE4",x"1DDA",x"1DD0",x"1DC6",x"1DBC",x"1DB2",x"1DA8",x"1D9E",
x"1D94",x"1D8A",x"1D80",x"1D76",x"1D6C",x"1D62",x"1D58",x"1D4E",x"1D43",x"1D39",x"1D2F",x"1D25",x"1D1B",x"1D10",x"1D06",x"1CFC",
x"1CF2",x"1CE7",x"1CDD",x"1CD3",x"1CC8",x"1CBE",x"1CB3",x"1CA9",x"1C9F",x"1C94",x"1C8A",x"1C7F",x"1C75",x"1C6A",x"1C60",x"1C55",
x"1C4A",x"1C40",x"1C35",x"1C2B",x"1C20",x"1C15",x"1C0B",x"1C00",x"1BF5",x"1BEB",x"1BE0",x"1BD5",x"1BCA",x"1BC0",x"1BB5",x"1BAA",
x"1B9F",x"1B94",x"1B89",x"1B7E",x"1B74",x"1B69",x"1B5E",x"1B53",x"1B48",x"1B3D",x"1B32",x"1B27",x"1B1C",x"1B11",x"1B06",x"1AFB",
x"1AEF",x"1AE4",x"1AD9",x"1ACE",x"1AC3",x"1AB8",x"1AAC",x"1AA1",x"1A96",x"1A8B",x"1A80",x"1A74",x"1A69",x"1A5E",x"1A52",x"1A47",
x"1A3C",x"1A30",x"1A25",x"1A19",x"1A0E",x"1A03",x"19F7",x"19EC",x"19E0",x"19D5",x"19C9",x"19BE",x"19B2",x"19A7",x"199B",x"198F",
x"1984",x"1978",x"196C",x"1961",x"1955",x"1949",x"193E",x"1932",x"1926",x"191B",x"190F",x"1903",x"18F7",x"18EB",x"18E0",x"18D4",
x"18C8",x"18BC",x"18B0",x"18A4",x"1898",x"188C",x"1881",x"1875",x"1869",x"185D",x"1851",x"1845",x"1839",x"182D",x"1820",x"1814",
x"1808",x"17FC",x"17F0",x"17E4",x"17D8",x"17CC",x"17BF",x"17B3",x"17A7",x"179B",x"178F",x"1782",x"1776",x"176A",x"175E",x"1751",
x"1745",x"1739",x"172C",x"1720",x"1714",x"1707",x"16FB",x"16EE",x"16E2",x"16D6",x"16C9",x"16BD",x"16B0",x"16A4",x"1697",x"168B",
x"167E",x"1672",x"1665",x"1658",x"164C",x"163F",x"1633",x"1626",x"1619",x"160D",x"1600",x"15F3",x"15E7",x"15DA",x"15CD",x"15C0",
x"15B4",x"15A7",x"159A",x"158D",x"1581",x"1574",x"1567",x"155A",x"154D",x"1540",x"1534",x"1527",x"151A",x"150D",x"1500",x"14F3",
x"14E6",x"14D9",x"14CC",x"14BF",x"14B2",x"14A5",x"1498",x"148B",x"147E",x"1471",x"1464",x"1457",x"144A",x"143C",x"142F",x"1422",
x"1415",x"1408",x"13FB",x"13EE",x"13E0",x"13D3",x"13C6",x"13B9",x"13AB",x"139E",x"1391",x"1384",x"1376",x"1369",x"135C",x"134E",
x"1341",x"1334",x"1326",x"1319",x"130C",x"12FE",x"12F1",x"12E3",x"12D6",x"12C8",x"12BB",x"12AD",x"12A0",x"1293",x"1285",x"1277",
x"126A",x"125C",x"124F",x"1241",x"1234",x"1226",x"1219",x"120B",x"11FD",x"11F0",x"11E2",x"11D4",x"11C7",x"11B9",x"11AB",x"119E",
x"1190",x"1182",x"1175",x"1167",x"1159",x"114B",x"113E",x"1130",x"1122",x"1114",x"1107",x"10F9",x"10EB",x"10DD",x"10CF",x"10C1",
x"10B4",x"10A6",x"1098",x"108A",x"107C",x"106E",x"1060",x"1052",x"1044",x"1036",x"1028",x"101A",x"100C",x"0FFE",x"0FF0",x"0FE2",
x"0FD4",x"0FC6",x"0FB8",x"0FAA",x"0F9C",x"0F8E",x"0F80",x"0F72",x"0F64",x"0F56",x"0F48",x"0F3A",x"0F2B",x"0F1D",x"0F0F",x"0F01",
x"0EF3",x"0EE5",x"0ED6",x"0EC8",x"0EBA",x"0EAC",x"0E9E",x"0E8F",x"0E81",x"0E73",x"0E65",x"0E56",x"0E48",x"0E3A",x"0E2C",x"0E1D",
x"0E0F",x"0E01",x"0DF2",x"0DE4",x"0DD6",x"0DC7",x"0DB9",x"0DAB",x"0D9C",x"0D8E",x"0D7F",x"0D71",x"0D63",x"0D54",x"0D46",x"0D37",
x"0D29",x"0D1A",x"0D0C",x"0CFE",x"0CEF",x"0CE1",x"0CD2",x"0CC4",x"0CB5",x"0CA7",x"0C98",x"0C8A",x"0C7B",x"0C6C",x"0C5E",x"0C4F",
x"0C41",x"0C32",x"0C24",x"0C15",x"0C06",x"0BF8",x"0BE9",x"0BDB",x"0BCC",x"0BBD",x"0BAF",x"0BA0",x"0B92",x"0B83",x"0B74",x"0B66",
x"0B57",x"0B48",x"0B39",x"0B2B",x"0B1C",x"0B0D",x"0AFF",x"0AF0",x"0AE1",x"0AD2",x"0AC4",x"0AB5",x"0AA6",x"0A97",x"0A89",x"0A7A",
x"0A6B",x"0A5C",x"0A4E",x"0A3F",x"0A30",x"0A21",x"0A12",x"0A03",x"09F5",x"09E6",x"09D7",x"09C8",x"09B9",x"09AA",x"099C",x"098D",
x"097E",x"096F",x"0960",x"0951",x"0942",x"0933",x"0924",x"0916",x"0907",x"08F8",x"08E9",x"08DA",x"08CB",x"08BC",x"08AD",x"089E",
x"088F",x"0880",x"0871",x"0862",x"0853",x"0844",x"0835",x"0826",x"0817",x"0808",x"07F9",x"07EA",x"07DB",x"07CC",x"07BD",x"07AE",
x"079F",x"0790",x"0781",x"0772",x"0763",x"0754",x"0745",x"0735",x"0726",x"0717",x"0708",x"06F9",x"06EA",x"06DB",x"06CC",x"06BD",
x"06AE",x"069F",x"068F",x"0680",x"0671",x"0662",x"0653",x"0644",x"0635",x"0625",x"0616",x"0607",x"05F8",x"05E9",x"05DA",x"05CA",
x"05BB",x"05AC",x"059D",x"058E",x"057F",x"056F",x"0560",x"0551",x"0542",x"0533",x"0523",x"0514",x"0505",x"04F6",x"04E7",x"04D7",
x"04C8",x"04B9",x"04AA",x"049A",x"048B",x"047C",x"046D",x"045D",x"044E",x"043F",x"0430",x"0420",x"0411",x"0402",x"03F3",x"03E3",
x"03D4",x"03C5",x"03B6",x"03A6",x"0397",x"0388",x"0379",x"0369",x"035A",x"034B",x"033B",x"032C",x"031D",x"030E",x"02FE",x"02EF",
x"02E0",x"02D0",x"02C1",x"02B2",x"02A2",x"0293",x"0284",x"0275",x"0265",x"0256",x"0247",x"0237",x"0228",x"0219",x"0209",x"01FA",
x"01EB",x"01DB",x"01CC",x"01BD",x"01AD",x"019E",x"018F",x"017F",x"0170",x"0161",x"0151",x"0142",x"0133",x"0123",x"0114",x"0105",
x"00F5",x"00E6",x"00D7",x"00C7",x"00B8",x"00A9",x"0099",x"008A",x"007B",x"006B",x"005C",x"004D",x"003D",x"002E",x"001F",x"000F");
begin
-- Signed Accumulator
-- ------------------
dac_clk<=clk;
Freq_Data_buf(27 downto 18)<=Freq_Data ;
Acc: process (CLK,reset)
begin
if clk'event and clk='1' then
if reset = '0' then Accum <="000000000000000000000000000000";
else Accum <= Accum + Freq_Data_buf ;
Address <= std_logic_vector(Accum(27 downto 17));
Result <= Sinus_Rom(conv_integer(Address));
Result(14) <=sign;
sign<= Accum(28); -- MSB
Dout(11 downto 0) <= Result(14 downto 3);
end if;
end if;
END process acc;
end RTL;
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.all;
USE ieee.numeric_std.ALL;
library STD;
use STD.TEXTIO.ALL;
ENTITY out_txt_vhd IS
END out_txt_vhd;
ARCHITECTURE behavior OF out_txt_vhd IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT DDFS
PORT(
CLK : IN std_logic;
reset : IN std_logic;
Freq_Data : IN std_logic_vector(9 downto 0);
Dout : OUT std_logic_vector(11 downto 0);
Dac_clk : OUT std_logic
);
END COMPONENT;
--Inputs
SIGNAL CLK : std_logic := '0';
SIGNAL reset : std_logic := '0';
SIGNAL Freq_Data : std_logic_vector(9 downto 0) := "0011111111";--(others=>'0');
--Outputs
SIGNAL DDS_Out : std_logic_vector(11 downto 0);
SIGNAL Dac_clk : std_logic;
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: DDFS PORT MAP(
CLK => CLK,
reset => reset,
Freq_Data => Freq_Data,
Dout => DDS_Out,
Dac_clk => Dac_clk
);
clk<=not clk after 5ns; --100Mhz
tb : PROCESS
BEGIN
reset<='0';
wait for 10 ns; -- Wait 20 ns for global reset to finish
reset<='1';
-- Place stimulus here
wait; -- will wait forever
END PROCESS;
END;
[此贴子已经被作者于2009-5-4 22:04:31编辑过]
谢谢了!真是个大好人
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |