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