##// END OF EJS Templates
Sync
jeandet -
r273:8decc2aa17b6 alexis
parent child
Show More
@@ -0,0 +1,100
1 ----------------------------------------------------------------------------------
2 -- Company:
3 -- Engineer:
4 --
5 -- Create Date: 15:20:11 12/08/2013
6 -- Design Name:
7 -- Module Name: GPMC_SLAVE - Behavioral
8 -- Project Name:
9 -- Target Devices:
10 -- Tool versions:
11 -- Description:
12 --
13 -- Dependencies:
14 --
15 -- Revision:
16 -- Revision 0.01 - File Created
17 -- Additional Comments:
18 --
19 ----------------------------------------------------------------------------------
20 library IEEE;
21 use IEEE.STD_LOGIC_1164.ALL;
22 use IEEE.numeric_std.all;
23 library grlib, techmap;
24 use grlib.stdlib.all;
25 use techmap.gencomp.all;
26 use techmap.allclkgen.all;
27 library lpp;
28 use lpp.general_purpose.all;
29
30 entity GPMC_SLAVE is
31 generic (
32 memtech : integer := 0;
33 padtech : integer := 0
34 );
35 Port (
36 clk : in STD_LOGIC;
37 reset : in STD_LOGIC;
38 GPMC_AD : inout std_logic_vector(15 downto 0);
39 GPMC_A : in std_logic_vector(19 downto 0);
40 GPMC_CLK_MUX0 : in std_ulogic;
41 GPMC_WEN : in std_ulogic;
42 GPMC_OEN_REN : in std_ulogic;
43 GPMC_ADVN_ALE : in std_ulogic;
44 GPMC_CSN : in std_ulogic_vector(2 downto 0);
45 GPMC_BE0N_CLE : in std_ulogic;
46 GPMC_BE1N : in std_ulogic;
47 GPMC_WAIT0 : in std_ulogic;
48 GPMC_WPN : in std_ulogic
49 );
50 end GPMC_SLAVE;
51
52 architecture Behavioral of GPMC_SLAVE is
53 constant VectInit : std_logic_vector(15 downto 0):=(others => '0');
54
55 signal data_out :std_logic_vector(15 downto 0);
56 signal data_in :std_logic_vector(15 downto 0);
57
58 type RAMarrayT is array (0 to 255) of std_logic_vector(15 downto 0);
59 signal RAMarray : RAMarrayT:=(others => VectInit);
60 signal ramindex : integer range 0 to 255;
61
62 begin
63
64 data_pad : iopadv generic map (tech=> padtech,width => 16)
65 port map (
66 pad => GPMC_AD(15 downto 0),
67 o => data_in(15 downto 0),
68 en => GPMC_OEN_REN,
69 i => data_out(15 downto 0)
70 );
71
72 process(reset,GPMC_CLK_MUX0)
73 begin
74 if reset = '0' then
75 data_out <= (others => '0');
76 ramindex <= 0;
77 elsif GPMC_CLK_MUX0'event and GPMC_CLK_MUX0 = '1' then
78 ramindex <= to_integer(unsigned(GPMC_A));
79 data_out <= RAMarray(ramindex);
80 if GPMC_WEN = '0' then
81 RAMarray(ramindex) <= data_in;
82 end if;
83 end if;
84 end process;
85
86 end Behavioral;
87
88
89
90
91
92
93
94
95
96
97
98
99
100
@@ -1,109 +1,167
1
1
2 NET "CLK" CLOCK_DEDICATED_ROUTE = FALSE;
2 NET "CLK" CLOCK_DEDICATED_ROUTE = FALSE;
3 NET "CLK" LOC = "K20"| slew=FAST | IOSTANDARD=LVTTL;
3 NET "CLK" LOC = "K20"| slew=FAST | IOSTANDARD=LVTTL;
4 NET "CLKM" TNM_NET = "clkm_net";
4 NET "CLKM" TNM_NET = "clkm_net";
5 TIMESPEC "TS_clkm_net" = PERIOD "clkm_net" 10 ns HIGH 50%;
5 TIMESPEC "TS_clkm_net" = PERIOD "clkm_net" 10 ns HIGH 50%;
6
6
7
7 NET "RESET" CLOCK_DEDICATED_ROUTE = FALSE;
8 NET "RESET" CLOCK_DEDICATED_ROUTE = FALSE;
8 NET "RESET" LOC = "AB11" | slew=FAST | IOSTANDARD=LVTTL;
9 NET "RESET" LOC = "AB11" | slew=FAST | IOSTANDARD=LVTTL;
9
10
10 NET "DAC_nCLR" LOC = "R11" | IOSTANDARD=LVTTL;
11 NET "DAC_nCLR" LOC = "R11" | IOSTANDARD=LVTTL;
11 NET "DAC_nCS" LOC = "T12" | IOSTANDARD=LVTTL;
12 NET "DAC_nCS" LOC = "T12" | IOSTANDARD=LVTTL;
12 NET "CAL_IN_SCK" LOC = "R13" | IOSTANDARD=LVTTL;
13 NET "CAL_IN_SCK" LOC = "R13" | IOSTANDARD=LVTTL;
13 NET "DAC_SDI(0)" LOC = "P5" | IOSTANDARD=LVTTL;
14 NET "DAC_SDI(0)" LOC = "P5" | IOSTANDARD=LVTTL;
14 NET "DAC_SDI(1)" LOC = "M5" | IOSTANDARD=LVTTL;
15 NET "DAC_SDI(1)" LOC = "M5" | IOSTANDARD=LVTTL;
15 NET "DAC_SDI(2)" LOC = "C8" | IOSTANDARD=LVTTL;
16 NET "DAC_SDI(2)" LOC = "C8" | IOSTANDARD=LVTTL;
16 NET "DAC_SDI(3)" LOC = "M6" | IOSTANDARD=LVTTL;
17 NET "DAC_SDI(3)" LOC = "M6" | IOSTANDARD=LVTTL;
17 NET "DAC_SDI(4)" LOC = "K22" | IOSTANDARD=LVTTL;
18 NET "DAC_SDI(4)" LOC = "K22" | IOSTANDARD=LVTTL;
18 NET "DAC_SDI(5)" LOC = "L22" | IOSTANDARD=LVTTL;
19 NET "DAC_SDI(5)" LOC = "L22" | IOSTANDARD=LVTTL;
19 NET "DAC_SDI(6)" LOC = "G19" | IOSTANDARD=LVTTL;
20 NET "DAC_SDI(6)" LOC = "G19" | IOSTANDARD=LVTTL;
20 NET "DAC_SDI(7)" LOC = "F20" | IOSTANDARD=LVTTL;
21 NET "DAC_SDI(7)" LOC = "F20" | IOSTANDARD=LVTTL;
21
22
22
23
23 NET "TXD" LOC = "V22"| slew=FAST | IOSTANDARD=LVTTL;
24 NET "TXD" LOC = "V22"| slew=FAST | IOSTANDARD=LVTTL;
24 NET "RXD" LOC = "U22"| slew=FAST | IOSTANDARD=LVTTL;
25 NET "RXD" LOC = "U22"| slew=FAST | IOSTANDARD=LVTTL;
25 NET "LED(0)" LOC = "AB9"| slew=FAST | IOSTANDARD=LVTTL;
26 NET "LED(0)" LOC = "AB9"| slew=FAST | IOSTANDARD=LVTTL;
26 NET "LED(1)" LOC = "AB8"| slew=FAST | IOSTANDARD=LVTTL;
27 NET "LED(1)" LOC = "AB8"| slew=FAST | IOSTANDARD=LVTTL;
27 NET "LED(2)" LOC = "AA8"| slew=FAST | IOSTANDARD=LVTTL;
28 NET "LED(2)" LOC = "AA8"| slew=FAST | IOSTANDARD=LVTTL;
28
29
29 NET "urxd1" LOC = "D3" | IOSTANDARD=LVTTL; # Unused PIN
30 NET "urxd1" LOC = "D3" | IOSTANDARD=LVTTL; # Unused PIN
30 NET "utxd1" LOC = "C4" | IOSTANDARD=LVTTL; # Unused PIN
31 NET "utxd1" LOC = "C4" | IOSTANDARD=LVTTL; # Unused PIN
31
32
32 NET "sdcke" LOC = "B6" | slew=FAST | IOSTANDARD=LVTTL; # clk en
33 NET "sdcke" LOC = "B6" | slew=FAST | IOSTANDARD=LVTTL; # clk en
33 NET "sdcsn" LOC = "G20"| slew=FAST | IOSTANDARD=LVTTL; # chip sel
34 NET "sdcsn" LOC = "G20"| slew=FAST | IOSTANDARD=LVTTL; # chip sel
34 NET "sdwen" LOC = "D14"| slew=FAST | IOSTANDARD=LVTTL; # write en
35 NET "sdwen" LOC = "D14"| slew=FAST | IOSTANDARD=LVTTL; # write en
35 NET "sdrasn" LOC = "H19"| slew=FAST | IOSTANDARD=LVTTL; # row addr stb
36 NET "sdrasn" LOC = "H19"| slew=FAST | IOSTANDARD=LVTTL; # row addr stb
36 NET "sdcasn" LOC = "C14"| slew=FAST | IOSTANDARD=LVTTL; # col addr stb
37 NET "sdcasn" LOC = "C14"| slew=FAST | IOSTANDARD=LVTTL; # col addr stb
37
38
38 NET "sddqm(3)" LOC = "A5" | slew=FAST | IOSTANDARD=LVTTL; # data i/o mask
39 NET "sddqm(3)" LOC = "A5" | slew=FAST | IOSTANDARD=LVTTL; # data i/o mask
39 NET "sddqm(2)" LOC = "D21"| slew=FAST | IOSTANDARD=LVTTL; # data i/o mask
40 NET "sddqm(2)" LOC = "D21"| slew=FAST | IOSTANDARD=LVTTL; # data i/o mask
40 NET "sddqm(1)" LOC = "C7" | slew=FAST | IOSTANDARD=LVTTL; # data i/o mask
41 NET "sddqm(1)" LOC = "C7" | slew=FAST | IOSTANDARD=LVTTL; # data i/o mask
41 NET "sddqm(0)" LOC = "D15"| slew=FAST | IOSTANDARD=LVTTL; # data i/o mask
42 NET "sddqm(0)" LOC = "D15"| slew=FAST | IOSTANDARD=LVTTL; # data i/o mask
42
43
43 NET "sdclk" CLOCK_DEDICATED_ROUTE = FALSE;
44 NET "sdclk" CLOCK_DEDICATED_ROUTE = FALSE;
44 NET "sdclk" LOC = "A6" | slew=FAST | IOSTANDARD=LVTTL; # sdram clk output
45 NET "sdclk" LOC = "A6" | slew=FAST | IOSTANDARD=LVTTL; # sdram clk output
45 NET "sdba(1)" LOC = "J20"| slew=FAST | IOSTANDARD=LVTTL; # bank select address
46 NET "sdba(1)" LOC = "J20"| slew=FAST | IOSTANDARD=LVTTL; # bank select address
46 NET "sdba(0)" LOC = "G16"| slew=FAST | IOSTANDARD=LVTTL; # bank select address
47 NET "sdba(0)" LOC = "G16"| slew=FAST | IOSTANDARD=LVTTL; # bank select address
47
48
48 NET "Address(11)" LOC = "H8"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
49 NET "Address(11)" LOC = "H8"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
49 NET "Address(10)" LOC = "G7"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
50 NET "Address(10)" LOC = "G7"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
50 NET "Address(9)" LOC = "K7"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
51 NET "Address(9)" LOC = "K7"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
51 NET "Address(8)" LOC = "H6"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
52 NET "Address(8)" LOC = "H6"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
52 NET "Address(7)" LOC = "H5"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
53 NET "Address(7)" LOC = "H5"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
53 NET "Address(6)" LOC = "K8"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
54 NET "Address(6)" LOC = "K8"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
54 NET "Address(5)" LOC = "G4"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
55 NET "Address(5)" LOC = "G4"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
55 NET "Address(4)" LOC = "H3"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
56 NET "Address(4)" LOC = "H3"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
56 NET "Address(3)" LOC = "D2"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
57 NET "Address(3)" LOC = "D2"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
57 NET "Address(2)" LOC = "B3"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
58 NET "Address(2)" LOC = "B3"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
58 NET "Address(1)" LOC = "A2"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
59 NET "Address(1)" LOC = "A2"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
59 NET "Address(0)" LOC = "C22"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
60 NET "Address(0)" LOC = "C22"| slew=FAST | IOSTANDARD=LVTTL; # sdram address
60
61
61 NET "Data(31)" LOC = "C5" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
62 NET "Data(31)" LOC = "C5" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
62 NET "Data(30)" LOC = "A4" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
63 NET "Data(30)" LOC = "A4" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
63 NET "Data(29)" LOC = "A3" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
64 NET "Data(29)" LOC = "A3" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
64 NET "Data(28)" LOC = "B2" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
65 NET "Data(28)" LOC = "B2" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
65 NET "Data(27)" LOC = "B1" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
66 NET "Data(27)" LOC = "B1" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
66 NET "Data(26)" LOC = "C1" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
67 NET "Data(26)" LOC = "C1" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
67 NET "Data(25)" LOC = "D1" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
68 NET "Data(25)" LOC = "D1" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
68 NET "Data(24)" LOC = "E1" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
69 NET "Data(24)" LOC = "E1" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
69 NET "Data(23)" LOC = "J22"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
70 NET "Data(23)" LOC = "J22"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
70 NET "Data(22)" LOC = "H22"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
71 NET "Data(22)" LOC = "H22"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
71 NET "Data(21)" LOC = "H21"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
72 NET "Data(21)" LOC = "H21"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
72 NET "Data(20)" LOC = "G22"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
73 NET "Data(20)" LOC = "G22"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
73 NET "Data(19)" LOC = "F22"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
74 NET "Data(19)" LOC = "F22"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
74 NET "Data(18)" LOC = "F21"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
75 NET "Data(18)" LOC = "F21"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
75 NET "Data(17)" LOC = "E22"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
76 NET "Data(17)" LOC = "E22"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
76 NET "Data(16)" LOC = "D22"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
77 NET "Data(16)" LOC = "D22"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
77 NET "Data(15)" LOC = "A7" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
78 NET "Data(15)" LOC = "A7" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
78 NET "Data(14)" LOC = "B8" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
79 NET "Data(14)" LOC = "B8" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
79 NET "Data(13)" LOC = "A8" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
80 NET "Data(13)" LOC = "A8" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
80 NET "Data(12)" LOC = "C9" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
81 NET "Data(12)" LOC = "C9" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
81 NET "Data(11)" LOC = "A9" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
82 NET "Data(11)" LOC = "A9" | slew=FAST | IOSTANDARD=LVTTL; # sdram data
82 NET "Data(10)" LOC = "B10"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
83 NET "Data(10)" LOC = "B10"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
83 NET "Data(9)" LOC = "A10"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
84 NET "Data(9)" LOC = "A10"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
84 NET "Data(8)" LOC = "C11"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
85 NET "Data(8)" LOC = "C11"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
85 NET "Data(7)" LOC = "A13"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
86 NET "Data(7)" LOC = "A13"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
86 NET "Data(6)" LOC = "C13"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
87 NET "Data(6)" LOC = "C13"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
87 NET "Data(5)" LOC = "B22"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
88 NET "Data(5)" LOC = "B22"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
88 NET "Data(4)" LOC = "B21"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
89 NET "Data(4)" LOC = "B21"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
89 NET "Data(3)" LOC = "B20"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
90 NET "Data(3)" LOC = "B20"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
90 NET "Data(2)" LOC = "A20"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
91 NET "Data(2)" LOC = "A20"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
91 NET "Data(1)" LOC = "B18"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
92 NET "Data(1)" LOC = "B18"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
92 NET "Data(0)" LOC = "A18"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
93 NET "Data(0)" LOC = "A18"| slew=FAST | IOSTANDARD=LVTTL; # sdram data
93
94
95 NET "GPMC_AD(0)" LOC = "M1"| slew=FAST | IOSTANDARD=LVTTL;
96 NET "GPMC_AD(1)" LOC = "M2"| slew=FAST | IOSTANDARD=LVTTL;
97 NET "GPMC_AD(2)" LOC = "AB3"| slew=FAST | IOSTANDARD=LVTTL;
98 NET "GPMC_AD(3)" LOC = "AB2"| slew=FAST | IOSTANDARD=LVTTL;
99 NET "GPMC_AD(4)" LOC = "N1"| slew=FAST | IOSTANDARD=LVTTL;
100 NET "GPMC_AD(5)" LOC = "N3"| slew=FAST | IOSTANDARD=LVTTL;
101 NET "GPMC_AD(6)" LOC = "AB5"| slew=FAST | IOSTANDARD=LVTTL;
102 NET "GPMC_AD(7)" LOC = "AB4"| slew=FAST | IOSTANDARD=LVTTL;
103 NET "GPMC_AD(8)" LOC = "R1"| slew=FAST | IOSTANDARD=LVTTL;
104 NET "GPMC_AD(9)" LOC = "V1"| slew=FAST | IOSTANDARD=LVTTL;
105 NET "GPMC_AD(10)" LOC = "U3"| slew=FAST | IOSTANDARD=LVTTL;
106 NET "GPMC_AD(11)" LOC = "T1"| slew=FAST | IOSTANDARD=LVTTL;
107 NET "GPMC_AD(12)" LOC = "V2"| slew=FAST | IOSTANDARD=LVTTL;
108 NET "GPMC_AD(13)" LOC = "W1"| slew=FAST | IOSTANDARD=LVTTL;
109 NET "GPMC_AD(14)" LOC = "T2"| slew=FAST | IOSTANDARD=LVTTL;
110 NET "GPMC_AD(15)" LOC = "U1"| slew=FAST | IOSTANDARD=LVTTL;
111
112
113
114 NET "GPMC_A(0)" LOC = "N4"| slew=FAST | IOSTANDARD=LVTTL;
115 NET "GPMC_A(1)" LOC = "N6"| slew=FAST | IOSTANDARD=LVTTL;
116 NET "GPMC_A(2)" LOC = "P3"| slew=FAST | IOSTANDARD=LVTTL;
117 NET "GPMC_A(3)" LOC = "P4"| slew=FAST | IOSTANDARD=LVTTL;
118 NET "GPMC_A(4)" LOC = "R4"| slew=FAST | IOSTANDARD=LVTTL;
119 NET "GPMC_A(5)" LOC = "T5"| slew=FAST | IOSTANDARD=LVTTL;
120 NET "GPMC_A(6)" LOC = "T6"| slew=FAST | IOSTANDARD=LVTTL;
121 NET "GPMC_A(7)" LOC = "T3"| slew=FAST | IOSTANDARD=LVTTL;
122 NET "GPMC_A(8)" LOC = "L1"| slew=FAST | IOSTANDARD=LVTTL;
123 NET "GPMC_A(9)" LOC = "K1"| slew=FAST | IOSTANDARD=LVTTL;
124 NET "GPMC_A(10)" LOC = "L3"| slew=FAST | IOSTANDARD=LVTTL;
125 NET "GPMC_A(11)" LOC = "K2"| slew=FAST | IOSTANDARD=LVTTL;
126 NET "GPMC_A(12)" LOC = "F1"| slew=FAST | IOSTANDARD=LVTTL;
127 NET "GPMC_A(13)" LOC = "F2"| slew=FAST | IOSTANDARD=LVTTL;
128 NET "GPMC_A(14)" LOC = "G3"| slew=FAST | IOSTANDARD=LVTTL;
129 NET "GPMC_A(15)" LOC = "H2"| slew=FAST | IOSTANDARD=LVTTL;
130 NET "GPMC_A(16)" LOC = "G1"| slew=FAST | IOSTANDARD=LVTTL;
131 NET "GPMC_A(17)" LOC = "H1"| slew=FAST | IOSTANDARD=LVTTL;
132 NET "GPMC_A(18)" LOC = "J1"| slew=FAST | IOSTANDARD=LVTTL;
133 NET "GPMC_A(19)" LOC = "J3"| slew=FAST | IOSTANDARD=LVTTL;
134
135 NET "GPMC_CLK_MUX0" CLOCK_DEDICATED_ROUTE = FALSE;
136 NET "GPMC_CLK_MUX0" LOC = "R3"| slew=FAST | IOSTANDARD=LVTTL;
137 NET "GPMC_WEN" LOC = "W3"| slew=FAST | IOSTANDARD=LVTTL;
138 NET "GPMC_OEN_REN" LOC = "Y2"| slew=FAST | IOSTANDARD=LVTTL;
139 NET "GPMC_ADVN_ALE" LOC = "AA2"| slew=FAST | IOSTANDARD=LVTTL;
140 NET "GPMC_CSN(0)" LOC = "M3"| slew=FAST | IOSTANDARD=LVTTL;
141 NET "GPMC_CSN(1)" LOC = "P1"| slew=FAST | IOSTANDARD=LVTTL;
142 NET "GPMC_CSN(2)" LOC = "P2"| slew=FAST | IOSTANDARD=LVTTL;
143 NET "GPMC_BE0N_CLE" LOC = "Y1"| slew=FAST | IOSTANDARD=LVTTL;
144 NET "GPMC_BE1N" LOC = "AB21"| slew=FAST | IOSTANDARD=LVTTL;
145 NET "GPMC_WAIT0" LOC = "AA21"| slew=FAST | IOSTANDARD=LVTTL;
146 NET "GPMC_WPN" LOC = "W22"| slew=FAST | IOSTANDARD=LVTTL;
94
147
95
148
96
149
97
150
98
151
99
152
100
153
101
154
102
155
103
156
104
157
105
158
106
159
107
160
108
161
109
162
163
164
165
166
167
@@ -1,330 +1,364
1 library ieee;
1 library ieee;
2 use ieee.std_logic_1164.all;
2 use ieee.std_logic_1164.all;
3 use IEEE.numeric_std.all;
3 use IEEE.numeric_std.all;
4 library grlib, techmap;
4 library grlib, techmap;
5 use grlib.amba.all;
5 use grlib.amba.all;
6 use grlib.amba.all;
6 use grlib.amba.all;
7 use grlib.stdlib.all;
7 use grlib.stdlib.all;
8 use techmap.gencomp.all;
8 use techmap.gencomp.all;
9 use techmap.allclkgen.all;
9 use techmap.allclkgen.all;
10 library gaisler;
10 library gaisler;
11 use gaisler.memctrl.all;
11 use gaisler.memctrl.all;
12 use gaisler.leon3.all;
12 use gaisler.leon3.all;
13 use gaisler.uart.all;
13 use gaisler.uart.all;
14 use gaisler.misc.all;
14 use gaisler.misc.all;
15 library esa;
15 library esa;
16 use esa.memoryctrl.all;
16 use esa.memoryctrl.all;
17 --use gaisler.sim.all;
17 --use gaisler.sim.all;
18 library lpp;
18 library lpp;
19 use lpp.lpp_ad_conv.all;
19 use lpp.lpp_ad_conv.all;
20 use lpp.lpp_amba.all;
20 use lpp.lpp_amba.all;
21 use lpp.apb_devices_list.all;
21 use lpp.apb_devices_list.all;
22 use lpp.general_purpose.all;
22 use lpp.general_purpose.all;
23 use lpp.lpp_cna.all;
23 use lpp.lpp_cna.all;
24
24
25 Library UNISIM;
25 Library UNISIM;
26 use UNISIM.vcomponents.all;
26 use UNISIM.vcomponents.all;
27
27
28
28
29 use work.config.all;
29 use work.config.all;
30 --==================================================================
30 --==================================================================
31 --
31 --
32 --
32 --
33 -- FPGA FREQ = 100MHz
33 -- FPGA FREQ = 100MHz
34 --
34 --
35 --
35 --
36 --==================================================================
36 --==================================================================
37
37
38 entity BeagleSynth is
38 entity BeagleSynth is
39 generic (
39 generic (
40 fabtech : integer := CFG_FABTECH;
40 fabtech : integer := CFG_FABTECH;
41 memtech : integer := CFG_MEMTECH;
41 memtech : integer := CFG_MEMTECH;
42 padtech : integer := CFG_PADTECH;
42 padtech : integer := CFG_PADTECH;
43 clktech : integer := CFG_CLKTECH
43 clktech : integer := CFG_CLKTECH
44 );
44 );
45 port (
45 port (
46 reset : in std_ulogic;
46 reset : in std_ulogic;
47 clk : in std_ulogic;
47 clk : in std_ulogic;
48 DAC_nCLR : out std_ulogic;
48 DAC_nCLR : out std_ulogic;
49 DAC_nCS : out std_ulogic;
49 DAC_nCS : out std_ulogic;
50 CAL_IN_SCK : out std_ulogic;
50 CAL_IN_SCK : out std_ulogic;
51 DAC_SDI : out std_logic_vector(7 downto 0);
51 DAC_SDI : out std_logic_vector(7 downto 0);
52 TXD : out std_ulogic;
52 TXD : out std_ulogic;
53 RXD : in std_ulogic;
53 RXD : in std_ulogic;
54 urxd1 : in std_ulogic;
54 urxd1 : in std_ulogic;
55 utxd1 : out std_ulogic;
55 utxd1 : out std_ulogic;
56 LED : out std_ulogic_vector(2 downto 0);
56 LED : out std_ulogic_vector(2 downto 0);
57 --------------------------------------------------------
58 ---- Beaglebone GPMC
59 --------------------------------------------------------
60 GPMC_AD : inout std_logic_vector(15 downto 0);
61 GPMC_A : in std_logic_vector(19 downto 0);
62 GPMC_CLK_MUX0 : in std_ulogic;
63 GPMC_WEN : in std_ulogic;
64 GPMC_OEN_REN : in std_ulogic;
65 GPMC_ADVN_ALE : in std_ulogic;
66 GPMC_CSN : in std_ulogic_vector(2 downto 0);
67 GPMC_BE0N_CLE : in std_ulogic;
68 GPMC_BE1N : in std_ulogic;
69 GPMC_WAIT0 : in std_ulogic;
70 GPMC_WPN : in std_ulogic;
71
57 --------------------------------------------------------
72 --------------------------------------------------------
58 ---- SDRAM
73 ---- SDRAM
59 ---- For SDRAM config have a look on leon3-altera-ep1c20
74 ---- For SDRAM config have a look on leon3-altera-ep1c20
60 ---- design from GRLIB, the IS42S32400E is similar to
75 ---- design from GRLIB, the IS42S32400E is similar to
61 ---- MT48LC4M32B2.
76 ---- MT48LC4M32B2.
62 --------------------------------------------------------
77 --------------------------------------------------------
63 sdcke : out std_logic; -- clk en
78 sdcke : out std_logic; -- clk en
64 sdcsn : out std_logic; -- chip sel
79 sdcsn : out std_logic; -- chip sel
65 sdwen : out std_logic; -- write en
80 sdwen : out std_logic; -- write en
66 sdrasn : out std_logic; -- row addr stb
81 sdrasn : out std_logic; -- row addr stb
67 sdcasn : out std_logic; -- col addr stb
82 sdcasn : out std_logic; -- col addr stb
68 sddqm : out std_logic_vector (3 downto 0); -- data i/o mask
83 sddqm : out std_logic_vector (3 downto 0); -- data i/o mask
69 sdclk : out std_logic; -- sdram clk output
84 sdclk : out std_logic; -- sdram clk output
70 sdba : out std_logic_vector (1 downto 0); -- bank select address
85 sdba : out std_logic_vector (1 downto 0); -- bank select address
71 Address : out std_logic_vector(11 downto 0); -- sdram address
86 Address : out std_logic_vector(11 downto 0); -- sdram address
72 Data : inout std_logic_vector(31 downto 0) -- optional sdram data
87 Data : inout std_logic_vector(31 downto 0) -- optional sdram data
73 );
88 );
74 end;
89 end;
75
90
76 architecture rtl of BeagleSynth is
91 architecture rtl of BeagleSynth is
77 constant maxahbmsp : integer := CFG_NCPU+CFG_AHB_UART+
92 constant maxahbmsp : integer := CFG_NCPU+CFG_AHB_UART+
78 CFG_GRETH+CFG_AHB_JTAG;
93 CFG_GRETH+CFG_AHB_JTAG;
79 constant maxahbm : integer := maxahbmsp;
94 constant maxahbm : integer := maxahbmsp;
80 constant IOAEN : integer := CFG_CAN;
95 constant IOAEN : integer := CFG_CAN;
81 constant boardfreq : integer := 100000;
96 constant boardfreq : integer := 100000;
82
97
83 signal clk2x : std_ulogic;
98 signal clk2x : std_ulogic;
84 signal lclk : std_ulogic;
99 signal lclk : std_ulogic;
85 signal clkm : std_ulogic;
100 signal clkm : std_ulogic;
86 signal rstn : std_ulogic;
101 signal rstn : std_ulogic;
87 signal rst : std_ulogic;
102 signal rst : std_ulogic;
88 signal rstraw : std_ulogic;
103 signal rstraw : std_ulogic;
89 signal pciclk : std_ulogic;
104 signal pciclk : std_ulogic;
90 signal sdclkl : std_ulogic;
105 signal sdclkl : std_ulogic;
91 signal sdclkl_DDR2 : std_ulogic;
106 signal sdclkl_DDR2 : std_ulogic;
92 signal cgi : clkgen_in_type;
107 signal cgi : clkgen_in_type;
93 signal cgo : clkgen_out_type;
108 signal cgo : clkgen_out_type;
94
109
95 --- AHB / APB
110 --- AHB / APB
96 signal apbi : apb_slv_in_type;
111 signal apbi : apb_slv_in_type;
97 signal apbo : apb_slv_out_vector := (others => apb_none);
112 signal apbo : apb_slv_out_vector := (others => apb_none);
98 signal ahbsi : ahb_slv_in_type;
113 signal ahbsi : ahb_slv_in_type;
99 signal ahbso : ahb_slv_out_vector := (others => ahbs_none);
114 signal ahbso : ahb_slv_out_vector := (others => ahbs_none);
100 signal ahbmi : ahb_mst_in_type;
115 signal ahbmi : ahb_mst_in_type;
101 signal ahbmo : ahb_mst_out_vector := (others => ahbm_none);
116 signal ahbmo : ahb_mst_out_vector := (others => ahbm_none);
102
117
103 --- MEM CTRLR
118 --- MEM CTRLR
104 signal sdi : sdctrl_in_type;
119 signal sdi : sdctrl_in_type;
105 signal sdo : sdctrl_out_type;
120 signal sdo : sdctrl_out_type;
106
121
107 --UART
122 --UART
108 signal ahbuarti : uart_in_type;
123 signal ahbuarti : uart_in_type;
109 signal ahbuarto : uart_out_type;
124 signal ahbuarto : uart_out_type;
110 signal apbuarti : uart_in_type;
125 signal apbuarti : uart_in_type;
111 signal apbuarto : uart_out_type;
126 signal apbuarto : uart_out_type;
112
127
113 signal led2int : std_logic;
128 signal led2int : std_logic;
114
129
115
130
116 signal DAC0_DATA : std_logic_vector(15 downto 0);
131 signal DAC0_DATA : std_logic_vector(15 downto 0);
117 signal DAC1_DATA : std_logic_vector(15 downto 0);
132 signal DAC1_DATA : std_logic_vector(15 downto 0);
118 signal DAC2_DATA : std_logic_vector(15 downto 0);
133 signal DAC2_DATA : std_logic_vector(15 downto 0);
119 signal DAC3_DATA : std_logic_vector(15 downto 0);
134 signal DAC3_DATA : std_logic_vector(15 downto 0);
120 signal DAC4_DATA : std_logic_vector(15 downto 0);
135 signal DAC4_DATA : std_logic_vector(15 downto 0);
121 signal DAC5_DATA : std_logic_vector(15 downto 0);
136 signal DAC5_DATA : std_logic_vector(15 downto 0);
122 signal DAC6_DATA : std_logic_vector(15 downto 0);
137 signal DAC6_DATA : std_logic_vector(15 downto 0);
123 signal DAC7_DATA : std_logic_vector(15 downto 0);
138 signal DAC7_DATA : std_logic_vector(15 downto 0);
124
139
125 signal DAC_DATA : CNA_16bit_T(7 downto 0,15 downto 0);
140 signal DAC_DATA : CNA_16bit_T(7 downto 0,15 downto 0);
126 signal smpclk : std_logic;
141 signal smpclk : std_logic;
127 signal smpclk_reg : std_logic;
142 signal smpclk_reg : std_logic;
128 signal DAC_SDO : std_logic;
143 signal DAC_SDO : std_logic;
129
144
145 signal gpmc_clk : std_logic;
130 begin
146 begin
131
147
132 DAC_nCLR <= '1';
148 DAC_nCLR <= '1';
133 --DAC_nCS <= SYNC;
149 --DAC_nCS <= SYNC;
134 --CAL_IN_SCK <= '1';
150 --CAL_IN_SCK <= '1';
135 --DAC_SDI <= (others =>'1');
151 --DAC_SDI <= (others =>'1');
136
152
137 resetn_pad : inpad generic map (tech => padtech) port map (reset, rst);
153 resetn_pad : inpad generic map (tech => padtech) port map (reset, rst);
138 rst0 : rstgen port map (rst, lclk, '1', rstn, rstraw);
154 rst0 : rstgen port map (rst, lclk, '1', rstn, rstraw);
139 --rstn <= reset;
155 --rstn <= reset;
140 --lclk <= clk;
156 --lclk <= clk;
141 clk_pad : clkpad GENERIC MAP (tech => padtech) PORT MAP (clk, lclk);
157 clk_pad : clkpad GENERIC MAP (tech => padtech) PORT MAP (clk, lclk);
142
158
143 cgi.pllctrl <= "00"; cgi.pllrst <= rstraw;
159 cgi.pllctrl <= "00"; cgi.pllrst <= rstraw;
144 clkgen0 : clkgen -- clock generator
160 clkgen0 : clkgen -- clock generator
145 generic map (clktech, CFG_CLKMUL, CFG_CLKDIV, CFG_MCTRL_SDEN, CFG_CLK_NOFB, 0, 0, 0, boardfreq)
161 generic map (clktech, CFG_CLKMUL, CFG_CLKDIV, CFG_MCTRL_SDEN, CFG_CLK_NOFB, 0, 0, 0, boardfreq)
146 port map (lclk, lclk, clkm, open, open, sdclkl, open, cgi, cgo,open,open);
162 port map (lclk, lclk, clkm, open, open, sdclkl, open, cgi, cgo,open,open);
147
163
148 -- sdclk_pad : outpad generic map (tech => padtech) port map (sdclk, sdclkl_DDR2);
164 -- sdclk_pad : outpad generic map (tech => padtech) port map (sdclk, sdclkl_DDR2);
149 --sdclk <= sdclkl;
165 --sdclk <= sdclkl;
150 sdclk <= sdclkl_DDR2;
166 sdclk <= sdclkl_DDR2;
151
167
152 LED(1) <= not cgo.clklock;
168 LED(1) <= not cgo.clklock;
153 LED(0) <= cgo.clklock;
169 LED(0) <= cgo.clklock;
154
170
155 ODDR2_inst : ODDR2
171 ODDR2_inst : ODDR2
156 generic map(
172 generic map(
157 DDR_ALIGNMENT => "NONE", -- Sets output alignment to "NONE", "C0", "C1"
173 DDR_ALIGNMENT => "NONE", -- Sets output alignment to "NONE", "C0", "C1"
158 INIT => '0', -- Sets initial state of the Q output to '0' or '1'
174 INIT => '0', -- Sets initial state of the Q output to '0' or '1'
159 SRTYPE => "SYNC") -- Specifies "SYNC" or "ASYNC" set/reset
175 SRTYPE => "SYNC") -- Specifies "SYNC" or "ASYNC" set/reset
160 port map (
176 port map (
161 Q => sdclkl_DDR2, -- 1-bit output data
177 Q => sdclkl_DDR2, -- 1-bit output data
162 C0 => sdclkl, -- 1-bit clock input
178 C0 => sdclkl, -- 1-bit clock input
163 C1 => not sdclkl, -- 1-bit clock input
179 C1 => not sdclkl, -- 1-bit clock input
164 CE => '1', -- 1-bit clock enable input
180 CE => '1', -- 1-bit clock enable input
165 D0 => '1', -- 1-bit data input (associated with C0)
181 D0 => '1', -- 1-bit data input (associated with C0)
166 D1 => '0', -- 1-bit data input (associated with C1)
182 D1 => '0', -- 1-bit data input (associated with C1)
167 R => '0', -- 1-bit reset input
183 R => '0', -- 1-bit reset input
168 S => '0' -- 1-bit set input
184 S => '0' -- 1-bit set input
169 );
185 );
170
186
171 ----------------------------------------------------------------------
187 ----------------------------------------------------------------------
172 --- AHB CONTROLLER -------------------------------------------------
188 --- AHB CONTROLLER -------------------------------------------------
173 ----------------------------------------------------------------------
189 ----------------------------------------------------------------------
174
190
175 ahb0 : ahbctrl -- AHB arbiter/multiplexer
191 ahb0 : ahbctrl -- AHB arbiter/multiplexer
176 generic map (defmast => CFG_DEFMST, split => CFG_SPLIT,
192 generic map (defmast => CFG_DEFMST, split => CFG_SPLIT,
177 rrobin => CFG_RROBIN, ioaddr => CFG_AHBIO,
193 rrobin => CFG_RROBIN, ioaddr => CFG_AHBIO,
178 ioen => IOAEN, nahbm => maxahbm, nahbs => 8)
194 ioen => IOAEN, nahbm => maxahbm, nahbs => 8)
179 port map (rstn, clkm, ahbmi, ahbmo, ahbsi, ahbso);
195 port map (rstn, clkm, ahbmi, ahbmo, ahbsi, ahbso);
180
196
181 ----------------------------------------------------------------------
197 ----------------------------------------------------------------------
182 --- AHB UART -------------------------------------------------------
198 --- AHB UART -------------------------------------------------------
183 ----------------------------------------------------------------------
199 ----------------------------------------------------------------------
184
200
185 dcomgen : if CFG_AHB_UART = 1 generate
201 dcomgen : if CFG_AHB_UART = 1 generate
186 dcom0: ahbuart -- Debug UART
202 dcom0: ahbuart -- Debug UART
187 generic map (hindex => CFG_NCPU, pindex => 7, paddr => 7)
203 generic map (hindex => CFG_NCPU, pindex => 7, paddr => 7)
188 port map (rstn, clkm, ahbuarti, ahbuarto, apbi, apbo(7), ahbmi, ahbmo(CFG_NCPU));
204 port map (rstn, clkm, ahbuarti, ahbuarto, apbi, apbo(7), ahbmi, ahbmo(CFG_NCPU));
189 ahbuarti.rxd <= RXD;
205 ahbuarti.rxd <= RXD;
190 TXD <= ahbuarto.txd;
206 TXD <= ahbuarto.txd;
191 end generate;
207 end generate;
192 nouah : if CFG_AHB_UART = 0 generate apbo(7) <= apb_none; end generate;
208 nouah : if CFG_AHB_UART = 0 generate apbo(7) <= apb_none; end generate;
193
209
194 ----------------------------------------------------------------------
210 ----------------------------------------------------------------------
195 --- APB Bridge -----------------------------------------------------
211 --- APB Bridge -----------------------------------------------------
196 ----------------------------------------------------------------------
212 ----------------------------------------------------------------------
197
213
198 apb0 : apbctrl -- AHB/APB bridge
214 apb0 : apbctrl -- AHB/APB bridge
199 generic map (hindex => 1, haddr => CFG_APBADDR)
215 generic map (hindex => 1, haddr => CFG_APBADDR)
200 port map (rstn, clkm, ahbsi, ahbso(1), apbi, apbo );
216 port map (rstn, clkm, ahbsi, ahbso(1), apbi, apbo );
201
217
202 ----------------------------------------------------------------------
218 ----------------------------------------------------------------------
203 --- APB UART -------------------------------------------------------
219 --- APB UART -------------------------------------------------------
204 ----------------------------------------------------------------------
220 ----------------------------------------------------------------------
205
221
206 ua1 : if CFG_UART1_ENABLE /= 0 generate
222 ua1 : if CFG_UART1_ENABLE /= 0 generate
207 uart1 : apbuart -- UART 1
223 uart1 : apbuart -- UART 1
208 generic map (pindex => 1, paddr => 1, pirq => 2, console => CFG_DUART,
224 generic map (pindex => 1, paddr => 1, pirq => 2, console => CFG_DUART,
209 fifosize => CFG_UART1_FIFO)
225 fifosize => CFG_UART1_FIFO)
210 port map (rstn, clkm, apbi, apbo(1), apbuarti, apbuarto);
226 port map (rstn, clkm, apbi, apbo(1), apbuarti, apbuarto);
211 apbuarti.rxd <= urxd1; apbuarti.extclk <= '0'; utxd1 <= apbuarto.txd;
227 apbuarti.rxd <= urxd1; apbuarti.extclk <= '0'; utxd1 <= apbuarto.txd;
212 apbuarti.ctsn <= '0';
228 apbuarti.ctsn <= '0';
213 end generate;
229 end generate;
214 noua0 : if CFG_UART1_ENABLE = 0 generate apbo(1) <= apb_none; end generate;
230 noua0 : if CFG_UART1_ENABLE = 0 generate apbo(1) <= apb_none; end generate;
215
231
216
232
217
233
218
234
219 --div0: Clk_divider
235 --div0: Clk_divider
220 -- generic map( 100000000,1)
236 -- generic map( 100000000,1)
221 -- Port map( clkm,rstn,LED(2));
237 -- Port map( clkm,rstn,LED(2));
222
238
223 LED(2) <= led2int;
239 LED(2) <= led2int;
224
240
225 process(clkm,rstn)
241 process(clkm,rstn)
226 begin
242 begin
227 if rstn = '0' then
243 if rstn = '0' then
228 led2int <= '0';
244 led2int <= '0';
229 elsif clkm'event and clkm='1' then
245 elsif clkm'event and clkm='1' then
230 led2int <= not led2int;
246 led2int <= not led2int;
231 end if;
247 end if;
232 end process;
248 end process;
233
249
234
250
235
251
236
252
237 sdc : sdctrl
253 sdc : sdctrl
238 generic map (hindex => 0, haddr => 16#600#, hmask => 16#F00#,ioaddr => 1, pwron => 0,
254 generic map (hindex => 0, haddr => 16#600#, hmask => 16#F00#,ioaddr => 1, pwron => 0,
239 invclk => 0,sdbits =>32)
255 invclk => 0,sdbits =>32)
240 port map (rstn, clkm, ahbsi, ahbso(0), sdi, sdo);
256 port map (rstn, clkm, ahbsi, ahbso(0), sdi, sdo);
241
257
242
258
243
259
244 --Alternative data pad instantiation with vectored bdrive
260 --Alternative data pad instantiation with vectored bdrive
245 sd_pad : iopadvv generic map (tech=> padtech,width => 32)
261 sd_pad : iopadvv generic map (tech=> padtech,width => 32)
246 port map (
262 port map (
247 data(31 downto 0),
263 data(31 downto 0),
248 sdo.data(31 downto 0),
264 sdo.data(31 downto 0),
249 sdo.vbdrive(31 downto 0),
265 sdo.vbdrive(31 downto 0),
250 sdi.data(31 downto 0));
266 sdi.data(31 downto 0));
251
267
252
268
253 -- connect memory controller outputs to entity output signals
269 -- connect memory controller outputs to entity output signals
254 Address <= sdo.address(13 downto 2);
270 Address <= sdo.address(13 downto 2);
255 --sdba <= sdo.address(16 downto 15);
271 --sdba <= sdo.address(16 downto 15);
256 sdba <= "00";
272 sdba <= "00";
257 sdcke <= sdo.sdcke(0);
273 sdcke <= sdo.sdcke(0);
258 sdwen <= sdo.sdwen;
274 sdwen <= sdo.sdwen;
259 sdcsn <= sdo.sdcsn(0);
275 sdcsn <= sdo.sdcsn(0);
260 sdrasn <= sdo.rasn;
276 sdrasn <= sdo.rasn;
261 sdcasn <= sdo.casn;
277 sdcasn <= sdo.casn;
262 sddqm <= sdo.dqm(3 downto 0);
278 sddqm <= sdo.dqm(3 downto 0);
263
279
264
280
265 DAC0 : DAC8581
281 DAC0 : DAC8581
266 generic map(100,8)
282 generic map(100,8)
267 Port map(
283 Port map(
268 clk => clkm,
284 clk => clkm,
269 rstn => rstn,
285 rstn => rstn,
270 smpclk => smpclk,
286 smpclk => smpclk,
271 sclk => CAL_IN_SCK,
287 sclk => CAL_IN_SCK,
272 csn => DAC_nCS,
288 csn => DAC_nCS,
273 sdo => DAC_SDI,
289 sdo => DAC_SDI,
274 smp_in => DAC_DATA
290 smp_in => DAC_DATA
275 );
291 );
276
292
277
293
278
294
279 smpclk0: Clk_divider
295 smpclk0: Clk_divider
280 GENERIC map(OSC_freqHz => 50000000,
296 GENERIC map(OSC_freqHz => 50000000,
281 TargetFreq_Hz => 256000)
297 TargetFreq_Hz => 256000)
282 PORT map( clk => clkm,
298 PORT map( clk => clkm,
283 reset => rstn,
299 reset => rstn,
284 clk_divided => smpclk
300 clk_divided => smpclk
285 );
301 );
286
302
287 all_bits: FOR I in 15 downto 0 GENERATE
303 all_bits: FOR I in 15 downto 0 GENERATE
288 DAC_DATA(0,I) <= DAC0_DATA(I);
304 DAC_DATA(0,I) <= DAC0_DATA(I);
289 DAC_DATA(1,I) <= DAC1_DATA(I);
305 DAC_DATA(1,I) <= DAC1_DATA(I);
290 DAC_DATA(2,I) <= DAC2_DATA(I);
306 DAC_DATA(2,I) <= DAC2_DATA(I);
291 DAC_DATA(3,I) <= DAC3_DATA(I);
307 DAC_DATA(3,I) <= DAC3_DATA(I);
292 DAC_DATA(4,I) <= DAC4_DATA(I);
308 DAC_DATA(4,I) <= DAC4_DATA(I);
293 DAC_DATA(5,I) <= DAC5_DATA(I);
309 DAC_DATA(5,I) <= DAC5_DATA(I);
294 DAC_DATA(6,I) <= DAC6_DATA(I);
310 DAC_DATA(6,I) <= DAC6_DATA(I);
295 DAC_DATA(7,I) <= DAC7_DATA(I);
311 DAC_DATA(7,I) <= DAC7_DATA(I);
296 end GENERATE;
312 end GENERATE;
297
313
298 process(clkm,rstn)
314 process(clkm,rstn)
299 begin
315 begin
300 if rstn ='0' then
316 if rstn ='0' then
301 DAC0_DATA <= X"0000";
317 DAC0_DATA <= X"0000";
302 DAC1_DATA <= X"0000";
318 DAC1_DATA <= X"0000";
303 DAC2_DATA <= X"0000";
319 DAC2_DATA <= X"0000";
304 DAC3_DATA <= X"0000";
320 DAC3_DATA <= X"0000";
305 DAC4_DATA <= X"0000";
321 DAC4_DATA <= X"0000";
306 DAC5_DATA <= X"0000";
322 DAC5_DATA <= X"0000";
307 DAC6_DATA <= X"0000";
323 DAC6_DATA <= X"0000";
308 DAC7_DATA <= X"0000";
324 DAC7_DATA <= X"0000";
309 smpclk_reg <= smpclk;
325 smpclk_reg <= smpclk;
310 elsif clkm'event and clkm = '1' then
326 elsif clkm'event and clkm = '1' then
311 smpclk_reg <= smpclk;
327 smpclk_reg <= smpclk;
312 if smpclk_reg = '0' and smpclk = '1' then
328 if smpclk_reg = '0' and smpclk = '1' then
313 DAC0_DATA <= std_logic_vector( UNSIGNED(DAC0_DATA) +1);
329 DAC0_DATA <= std_logic_vector( UNSIGNED(DAC0_DATA) +1);
314 DAC1_DATA <= std_logic_vector( UNSIGNED(DAC1_DATA) +2);
330 DAC1_DATA <= std_logic_vector( UNSIGNED(DAC1_DATA) +2);
315 DAC2_DATA <= std_logic_vector( UNSIGNED(DAC2_DATA) +3);
331 DAC2_DATA <= std_logic_vector( UNSIGNED(DAC2_DATA) +3);
316 DAC3_DATA <= std_logic_vector( UNSIGNED(DAC3_DATA) +4);
332 DAC3_DATA <= std_logic_vector( UNSIGNED(DAC3_DATA) +4);
317 DAC4_DATA <= std_logic_vector( UNSIGNED(DAC4_DATA) +5);
333 DAC4_DATA <= std_logic_vector( UNSIGNED(DAC4_DATA) +5);
318 DAC5_DATA <= std_logic_vector( UNSIGNED(DAC5_DATA) +6);
334 DAC5_DATA <= std_logic_vector( UNSIGNED(DAC5_DATA) +6);
319 DAC6_DATA <= std_logic_vector( UNSIGNED(DAC6_DATA) +7);
335 DAC6_DATA <= std_logic_vector( UNSIGNED(DAC6_DATA) +7);
320 DAC7_DATA <= std_logic_vector( UNSIGNED(DAC7_DATA) +8);
336 DAC7_DATA <= std_logic_vector( UNSIGNED(DAC7_DATA) +8);
321 -- DAC_DATA <= "0100000000000000";
337 -- DAC_DATA <= "0100000000000000";
322 end if;
338 end if;
323 end if;
339 end if;
324 end process;
340 end process;
325
341
342 gpmc_clk_pad : clkpad GENERIC MAP (tech => padtech) PORT MAP (GPMC_CLK_MUX0, gpmc_clk);
343 GPMCS0: entity work.GPMC_SLAVE
344 generic map(memtech,padtech)
345 Port map(
346 clk => clkm,
347 reset => rstn,
348 GPMC_AD => GPMC_AD,
349 GPMC_A => GPMC_A,
350 GPMC_CLK_MUX0 => gpmc_clk,
351 GPMC_WEN => GPMC_WEN,
352 GPMC_OEN_REN => GPMC_OEN_REN,
353 GPMC_ADVN_ALE => GPMC_ADVN_ALE,
354 GPMC_CSN => GPMC_CSN,
355 GPMC_BE0N_CLE => GPMC_BE0N_CLE,
356 GPMC_BE1N => GPMC_BE1N,
357 GPMC_WAIT0 => GPMC_WAIT0,
358 GPMC_WPN => GPMC_WAIT0
359 );
326
360
327 end rtl;
361 end rtl;
328
362
329
363
330
364
@@ -1,49 +1,49
1 include .config
1 include .config
2
2
3 #GRLIB=$(GRLIB)
3 #GRLIB=$(GRLIB)
4 TOP=BeagleSynth
4 TOP=BeagleSynth
5 BOARD=BeagleSynth
5 BOARD=BeagleSynth
6 #BOARD=SP601
6 #BOARD=SP601
7 include ../../boards/$(BOARD)/Makefile.inc
7 include ../../boards/$(BOARD)/Makefile.inc
8 DEVICE=$(PART)-$(PACKAGE)$(SPEED)
8 DEVICE=$(PART)-$(PACKAGE)$(SPEED)
9 #UCF=$(GRLIB)/boards/$(BOARD)/ICI3.ucf
9 #UCF=$(GRLIB)/boards/$(BOARD)/ICI3.ucf
10 UCF=../../boards/$(BOARD)/default.ucf
10 UCF=../../boards/$(BOARD)/default.ucf
11 QSF=../../boards/$(BOARD)/$(TOP).qsf
11 QSF=../../boards/$(BOARD)/$(TOP).qsf
12 EFFORT=high
12 EFFORT=high
13 ISEMAPOPT="-timing"
13 ISEMAPOPT="-timing"
14 XSTOPT=""
14 XSTOPT=""
15 SYNPOPT="set_option -maxfan 100; set_option -pipe 1; set_option -retiming 1; set_option -write_apr_constraint 0"
15 SYNPOPT="set_option -maxfan 100; set_option -pipe 1; set_option -retiming 1; set_option -write_apr_constraint 0"
16 VHDLOPTSYNFILES=
16 VHDLOPTSYNFILES=
17
17
18
18
19 VHDLSYNFILES= \
19 VHDLSYNFILES= \
20 config.vhd BeagleSynth.vhd BeagleSynth_MCTRL.vhd
20 config.vhd BeagleSynth.vhd BeagleSynth_MCTRL.vhd GPMC_SLAVE.vhd
21 #VHDLSIMFILES=testbench.vhd
21 #VHDLSIMFILES=testbench.vhd
22 #SIMTOP=testbench
22 #SIMTOP=testbench
23 #SDCFILE=$(GRLIB)/boards/$(BOARD)/default.sdc
23 #SDCFILE=$(GRLIB)/boards/$(BOARD)/default.sdc
24 SDCFILE=default.sdc
24 SDCFILE=default.sdc
25 BITGEN=../../boards/$(BOARD)/default.ut
25 BITGEN=../../boards/$(BOARD)/default.ut
26 CLEAN=soft-clean
26 CLEAN=soft-clean
27 VCOMOPT=-explicit
27 VCOMOPT=-explicit
28 TECHLIBS = secureip unisim
28 TECHLIBS = secureip unisim
29
29
30 LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \
30 LIBSKIP = core1553bbc core1553brm core1553brt gr1553 corePCIF \
31 tmtc openchip cypress ihp gleichmann gsi fmf spansion
31 tmtc openchip cypress ihp gleichmann gsi fmf spansion
32 DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest \
32 DIRSKIP = b1553 pcif leon2 leon2ft crypto satcan pci leon3ft ambatest \
33 leon4 leon4b64 l2cache gr1553b iommu haps ascs slink coremp7 pwm \
33 leon4 leon4b64 l2cache gr1553b iommu haps ascs slink coremp7 pwm \
34 ac97 hcan usb
34 ac97 hcan usb
35 DIRADD =
35 DIRADD =
36 FILEADD =
36 FILEADD =
37 FILESKIP = grcan.vhd ddr2.v mobile_ddr.v
37 FILESKIP = grcan.vhd ddr2.v mobile_ddr.v
38
38
39 include $(GRLIB)/bin/Makefile
39 include $(GRLIB)/bin/Makefile
40 include $(GRLIB)/software/leon3/Makefile
40 include $(GRLIB)/software/leon3/Makefile
41
41
42
42
43 ################## project specific targets ##########################
43 ################## project specific targets ##########################
44
44
45 flash:
45 flash:
46 xc3sprog -c ftdi -p 1 BeagleSynth.bit
46 xc3sprog -c ftdi -p 1 BeagleSynth.bit
47
47
48 ram:
48 ram:
49 xc3sprog -c ftdi -p 0 BeagleSynth.bit
49 xc3sprog -c ftdi -p 0 BeagleSynth.bit
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (508 lines changed) Show them Hide them
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (1030 lines changed) Show them Hide them
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (2370 lines changed) Show them Hide them
1 NO CONTENT: file was removed
NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (6296 lines changed) Show them Hide them
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (984 lines changed) Show them Hide them
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (1033 lines changed) Show them Hide them
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (19493 lines changed) Show them Hide them
1 NO CONTENT: file was removed
NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (19493 lines changed) Show them Hide them
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (1051 lines changed) Show them Hide them
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now