Parcourir la source

Initial commit

Jan Potocki il y a 7 ans
révision
f65a252004

+ 9
- 0
LICENSE Voir le fichier

@@ -0,0 +1,9 @@
1
+/*
2
+ * ------------------------------------------------------------
3
+ * "THE BEERWARE LICENSE" (Revision 42):
4
+ * <MKjanek32> wrote this code. As long as you retain this 
5
+ * notice, you can do whatever you want with this stuff. If we
6
+ * meet someday, and you think this stuff is worth it, you can
7
+ * buy me a beer in return.
8
+ * ------------------------------------------------------------
9
+*/

+ 5
- 0
README.md Voir le fichier

@@ -0,0 +1,5 @@
1
+# PWr - Układy cyfrowe i systemy wbudowane 2 P
2
+Projekt z kursu UCiSW2 u doktora Sugiera - obsługa magnetometru HMC5883L i wykorzystanie go jako kompas wyświetlający pomiary na monitorze za pomocą wyjścia VGA. Implementacja projektu została wykonana na własnej płytce ZRtech Espier III z układem FPGA Xilinx Spartan-6 XC6SLX9 i sygnałem zegarowym o częstotliwości 48 MHz.    
3
+
4
+Kontrolerem magnetometru jest moduł Magneto_Drv, komunikujący się z urządzeniem za pomocą modułu I2C_Master napisanego i udostępnionego przez doktora na stronie kursu. Za wyświetlanie kompasu na monitorze odpowiada moduł VGACompass generujący obraz o rozdzielczości 800x600 i częstotliwości odświeżania (około) 75 Hz. Moduł Display4x7S służy do wyświetlania pomiarów w osi Z (niewykorzystywanej przez kompas) na wyświetlaczu 7-segmentowym jako liczbę w systemie U16 - i jest klonem modułu o tej samej nazwie napisanego przez doktora dla laboratoryjnych płytek CPLD. Do ustawiania częstotliwości pomiarów według trybów z dokumentacji magnetometru służą przyciski S1-S3 (wciśnięcie - 1), nowe ustawienie obowiązuje od resetu układu (przycisk S4). Dioda D2 sygnalizuje nowy pomiar (DRDY), dioda D5 błąd w komunikacji I2C (NACK, zgaśnięcie - 1).  
5
+Film przedstawiający działanie projektu: www.youtube.com/watch?v=9VuPkd-sqCk

+ 9
- 0
ucisw2_magnetometr/Display4x7S.spl Voir le fichier

@@ -0,0 +1,9 @@
1
+[Inputs]
2
+Clk
3
+=DI[15:0]=
4
+=DP[3:0]=
5
+=Blank[3:0]=
6
+[Outputs]
7
+=DS_EN[3:0]=
8
+=DS[7:0]=
9
+[BiDir]

+ 32
- 0
ucisw2_magnetometr/Display4x7S.sym Voir le fichier

@@ -0,0 +1,32 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<symbol version="7" name="Display4x7S">
3
+    <symboltype>BLOCK</symboltype>
4
+    <timestamp>2018-5-25T12:38:38</timestamp>
5
+    <pin polarity="Input" x="0" y="-224" name="Clk" />
6
+    <pin polarity="Input" x="0" y="-160" name="DI(15:0)" />
7
+    <pin polarity="Input" x="0" y="-96" name="DP(3:0)" />
8
+    <pin polarity="Input" x="0" y="-32" name="Blank(3:0)" />
9
+    <pin polarity="Output" x="384" y="-224" name="DS_EN(3:0)" />
10
+    <pin polarity="Output" x="384" y="-32" name="DS(7:0)" />
11
+    <graph>
12
+        <rect width="256" x="64" y="-256" height="256" />
13
+        <attrtext style="alignment:BCENTER;fontsize:56;fontname:Arial" attrname="SymbolName" x="192" y="-264" type="symbol" />
14
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-224" type="pin Clk" />
15
+        <line x2="0" y1="-224" y2="-224" x1="64" />
16
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-160" type="pin DI(15:0)" />
17
+        <rect width="64" x="0" y="-172" height="24" />
18
+        <line x2="0" y1="-160" y2="-160" x1="64" />
19
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-96" type="pin DP(3:0)" />
20
+        <rect width="64" x="0" y="-108" height="24" />
21
+        <line x2="0" y1="-96" y2="-96" x1="64" />
22
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-32" type="pin Blank(3:0)" />
23
+        <rect width="64" x="0" y="-44" height="24" />
24
+        <line x2="0" y1="-32" y2="-32" x1="64" />
25
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="312" y="-224" type="pin DS_EN(3:0)" />
26
+        <rect width="64" x="320" y="-236" height="24" />
27
+        <line x2="384" y1="-224" y2="-224" x1="320" />
28
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="312" y="-32" type="pin DS(7:0)" />
29
+        <rect width="64" x="320" y="-44" height="24" />
30
+        <line x2="384" y1="-32" y2="-32" x1="320" />
31
+    </graph>
32
+</symbol>

+ 119
- 0
ucisw2_magnetometr/Display4x7S.vhd Voir le fichier

@@ -0,0 +1,119 @@
1
+----------------------------------------------------------------------------------
2
+-- Company: 
3
+-- Engineer: 
4
+-- 
5
+-- Create Date:    21:30:49 01/03/2018 
6
+-- Design Name: 
7
+-- Module Name:    Display4x7S - 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
+
23
+-- Uncomment the following library declaration if using
24
+-- arithmetic functions with Signed or Unsigned values
25
+--use IEEE.NUMERIC_STD.ALL;
26
+
27
+-- Uncomment the following library declaration if instantiating
28
+-- any Xilinx primitives in this code.
29
+--library UNISIM;
30
+--use UNISIM.VComponents.all;
31
+
32
+entity Display4x7S is
33
+    Port ( DI : in  STD_LOGIC_VECTOR (15 downto 0);
34
+           DP : in  STD_LOGIC_VECTOR (3 downto 0);
35
+           Blank : in  STD_LOGIC_VECTOR (3 downto 0);
36
+           Clk : in  STD_LOGIC;
37
+           DS_EN : out  STD_LOGIC_VECTOR (3 downto 0);
38
+           DS : out  STD_LOGIC_VECTOR (7 downto 0));
39
+end Display4x7S;
40
+
41
+architecture Behavioral of Display4x7S is
42
+	type state_type is (A, B, C, D);
43
+	signal state, next_state : state_type;
44
+	signal cycles : integer range 0 to 10000 := 0;
45
+	signal Bits : STD_LOGIC_VECTOR (3 downto 0);
46
+	signal Digit : STD_LOGIC_VECTOR (6 downto 0);
47
+	signal Point : STD_LOGIC;
48
+
49
+begin
50
+	process1 : process(Clk)
51
+	begin
52
+		if rising_edge(Clk) then
53
+			-- Clock frequency divider
54
+			-- 48 MHz -> 4800 Hz
55
+			-- (1200 Hz digit refresh rate)
56
+			if cycles = 10000 then
57
+				state <= next_state;
58
+				cycles <= 0;
59
+			else
60
+				cycles <= cycles + 1;
61
+			end if;
62
+		end if;
63
+	end process process1;
64
+   
65
+	process2 : process(state)
66
+	begin
67
+		next_state <= state; -- by default
68
+		
69
+		case state is
70
+			when A =>
71
+				next_state <= B;
72
+			when B =>
73
+				next_state <= C;
74
+			when C =>
75
+				next_state <= D;
76
+			when D =>
77
+				next_state <= A;
78
+		end case;
79
+	end process process2;
80
+	
81
+	Bits <=	DI(3 downto 0) when state = A else
82
+				DI(7 downto 4) when state = B else
83
+				DI(11 downto 8) when state = C else
84
+				DI(15 downto 12) when state = D else
85
+				"0000";
86
+	
87
+	Point <=	DP(0) when state = A else
88
+				DP(1) when state = B else
89
+				DP(2) when state = C else
90
+				DP(3) when state = D	else
91
+				'0';
92
+				
93
+	with Bits select
94
+		Digit <=	"0111111" when "0000",
95
+					"0000110" when "0001",
96
+					"1011011" when "0010",
97
+					"1001111" when "0011",
98
+					"1100110" when "0100",
99
+					"1101101" when "0101",
100
+					"1111101" when "0110",
101
+					"0000111" when "0111",
102
+					"1111111" when "1000",
103
+					"1101111" when "1001",
104
+					"1011111" when "1010",
105
+					"1111100" when "1011",
106
+					"0111001" when "1100",
107
+					"1011110" when "1101",
108
+					"1111001" when "1110",
109
+					"1110001" when "1111",
110
+					"0000000" when others;
111
+	
112
+	DS_EN <=	"1110" when state = A and Blank(0) = '0' else
113
+				"1101" when state = B and Blank(1) = '0' else
114
+				"1011" when state = C and Blank(2) = '0' else
115
+				"0111" when state = D and Blank(3) = '0' else
116
+				"1111";
117
+	
118
+	DS <= Point & Digit;
119
+end Behavioral;

+ 117
- 0
ucisw2_magnetometr/ESPIER_III.ucf Voir le fichier

@@ -0,0 +1,117 @@
1
+## ESPIER III V105 Spartan-6 board constraint file v1.1
2
+## J. Potocki 2018
3
+
4
+# Clock
5
+NET "CLK" LOC = P56 | PERIOD = 20.83ns HIGH 50%;
6
+
7
+# Keys
8
+NET "Rate<0>" LOC = P15;
9
+NET "Rate<1>" LOC = P21;
10
+NET "Rate<2>" LOC = P17;
11
+NET "Reset" LOC = P16;
12
+
13
+# LEDs
14
+NET "DRLED" LOC = P95 | SLEW = "SLOW";
15
+#NET "LED<1>" LOC = P94 | SLEW = "SLOW";
16
+#NET "LED<2>" LOC = P98 | SLEW = "SLOW";
17
+NET "NACK" LOC = P97 | SLEW = "SLOW";
18
+
19
+# DISPL. 7-SEG
20
+NET "DS_EN<0>" LOC = P75 | SLEW = "SLOW";
21
+NET "DS_EN<1>" LOC = P67 | SLEW = "SLOW";
22
+NET "DS_EN<2>" LOC = P74 | SLEW = "SLOW";
23
+NET "DS_EN<3>" LOC = P66 | SLEW = "SLOW";
24
+NET "DS<0>"    LOC = P80;  # Seg. A
25
+NET "DS<1>"    LOC = P79;  # Seg. B
26
+NET "DS<2>"    LOC = P83;  # Seg. C
27
+NET "DS<3>"    LOC = P82;  # Seg. D
28
+NET "DS<4>"    LOC = P81;  # Seg. E
29
+NET "DS<5>"    LOC = P78;  # Seg. F
30
+NET "DS<6>"    LOC = P84;  # Seg. G
31
+NET "DS<7>"    LOC = P85;  # Seg. DP
32
+
33
+# PS/2
34
+#NET "PS2_CLK"  LOC = P24 | SLEW = "SLOW";
35
+#NET "PS2_DATA" LOC = P23 | SLEW = "SLOW";
36
+
37
+# IrDA
38
+#NET "IRDA" LOC = P62 | SLEW = "SLOW";
39
+
40
+# RS-232 PL-2303 (clone)
41
+#NET "RS_TXD" LOC = P12 | SLEW = "SLOW";
42
+#NET "RS_RXD" LOC = P14 | SLEW = "SLOW";
43
+
44
+# ADC
45
+#NET "ADCSN" LOC = P61 | SLEW = "SLOW";
46
+#NET "ADDAT" LOC = P59 | SLEW = "SLOW";
47
+#NET "ADCLK" LOC = P55 | SLEW = "SLOW";
48
+
49
+# SPI FLASH
50
+#NET "FLASH_CLK" LOC = P88 | SLEW = "SLOW";
51
+#NET "FLASH_CS"  LOC = P93 | SLEW = "SLOW";
52
+#NET "FLASH_DI"  LOC = P87 | SLEW = "SLOW";
53
+#NET "FLASH_DO"  LOC = P92 | SLEW = "SLOW";
54
+
55
+# Buzzer
56
+#NET "BP1" LOC = P11 | SLEW = "SLOW";
57
+
58
+# VGA
59
+NET "V_R<0>" LOC = P46 | SLEW = FAST;
60
+NET "V_R<1>" LOC = P47 | SLEW = FAST;
61
+NET "V_R<2>" LOC = P48 | SLEW = FAST;
62
+NET "V_R<3>" LOC = P50 | SLEW = FAST;
63
+NET "V_R<4>" LOC = P51 | SLEW = FAST;
64
+NET "V_G<0>" LOC = P35 | SLEW = FAST;
65
+NET "V_G<1>" LOC = P40 | SLEW = FAST;
66
+NET "V_G<2>" LOC = P41 | SLEW = FAST;
67
+NET "V_G<3>" LOC = P43 | SLEW = FAST;
68
+NET "V_G<4>" LOC = P44 | SLEW = FAST;
69
+NET "V_G<5>" LOC = P45 | SLEW = FAST;
70
+NET "V_B<0>" LOC = P29 | SLEW = FAST;
71
+NET "V_B<1>" LOC = P30 | SLEW = FAST;
72
+NET "V_B<2>" LOC = P32 | SLEW = FAST;
73
+NET "V_B<3>" LOC = P33 | SLEW = FAST;
74
+NET "V_B<4>" LOC = P34 | SLEW = FAST;
75
+NET "V_SYNC" LOC = P27 | SLEW = FAST;
76
+NET "H_SYNC" LOC = P26 | SLEW = FAST;
77
+
78
+# SDRAM
79
+#NET "SDRAM_A<0>"   LOC = P7;
80
+#NET "SDRAM_A<1>"   LOC = P8;
81
+#NET "SDRAM_A<2>"   LOC = P9;
82
+#NET "SDRAM_A<3>"   LOC = P10;
83
+#NET "SDRAM_A<4>"   LOC = P143;
84
+#NET "SDRAM_A<5>"   LOC = P142;
85
+#NET "SDRAM_A<6>"   LOC = P141;
86
+#NET "SDRAM_A<7>"   LOC = P140;
87
+#NET "SDRAM_A<8>"   LOC = P139;
88
+#NET "SDRAM_A<9>"   LOC = P138;
89
+#NET "SDRAM_A<10>"  LOC = P6;
90
+#NET "SDRAM_A<11>"  LOC = P137;
91
+#NET "SDRAM_A<12>"  LOC = P134;
92
+#NET "SDRAM_BA<1>"  LOC = P5;
93
+#NET "SDRAM_BA<0>"  LOC = P2;
94
+#NET "SDRAM_CKE"    LOC = P133;
95
+#NET "SDRAM_CLK"    LOC = P132;
96
+#NET "SDRAM_CS_N"   LOC = P1;
97
+#NET "SDRAM_DQMH"   LOC = P131;
98
+#NET "SDRAM_DQML"   LOC = P114;
99
+#NET "SDRAM_WE_N"   LOC = P115;
100
+#NET "SDRAM_CAS_N"  LOC = P116;
101
+#NET "SDRAM_RAS_N"  LOC = P117;
102
+#NET "SDRAM_DQ<0>"  LOC = P100;
103
+#NET "SDRAM_DQ<1>"  LOC = P99;
104
+#NET "SDRAM_DQ<2>"  LOC = P102;
105
+#NET "SDRAM_DQ<3>"  LOC = P101;
106
+#NET "SDRAM_DQ<4>"  LOC = P104;
107
+#NET "SDRAM_DQ<5>"  LOC = P105;
108
+#NET "SDRAM_DQ<6>"  LOC = P111;
109
+#NET "SDRAM_DQ<7>"  LOC = P112;
110
+#NET "SDRAM_DQ<8>"  LOC = P127;
111
+#NET "SDRAM_DQ<9>"  LOC = P126;
112
+#NET "SDRAM_DQ<10>" LOC = P124;
113
+#NET "SDRAM_DQ<11>" LOC = P123;
114
+#NET "SDRAM_DQ<12>" LOC = P121;
115
+#NET "SDRAM_DQ<13>" LOC = P120;
116
+#NET "SDRAM_DQ<14>" LOC = P119;
117
+#NET "SDRAM_DQ<15>" LOC = P118;

+ 58
- 0
ucisw2_magnetometr/I2C_Master.sym Voir le fichier

@@ -0,0 +1,58 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<symbol version="7" name="I2C_Master">
3
+    <symboltype>BLOCK</symboltype>
4
+    <timestamp>2015-11-24T12:12:48</timestamp>
5
+    <pin polarity="Input" x="0" y="-480" name="Go" />
6
+    <pin polarity="Input" x="0" y="-416" name="Address(7:0)" />
7
+    <pin polarity="Input" x="0" y="-352" name="ReadCnt(3:0)" />
8
+    <pin polarity="BiDirectional" x="464" y="-480" name="SDA" />
9
+    <pin polarity="BiDirectional" x="464" y="-416" name="SCL" />
10
+    <pin polarity="Input" x="0" y="-256" name="FIFO_Pop" />
11
+    <pin polarity="Input" x="0" y="-192" name="FIFO_Push" />
12
+    <pin polarity="Input" x="0" y="-128" name="FIFO_DI(7:0)" />
13
+    <pin polarity="Output" x="464" y="-256" name="FIFO_Empty" />
14
+    <pin polarity="Output" x="464" y="-192" name="FIFO_Full" />
15
+    <pin polarity="Output" x="464" y="-128" name="FIFO_DO(7:0)" />
16
+    <pin polarity="Input" x="0" y="-32" name="Reset" />
17
+    <pin polarity="Input" x="0" y="32" name="Clk" />
18
+    <pin polarity="Output" x="464" y="-32" name="Busy" />
19
+    <pin polarity="Output" x="464" y="32" name="NACK" />
20
+    <graph>
21
+        <rect width="336" x="64" y="-512" height="572" />
22
+        <attrtext style="alignment:BCENTER;fontsize:56;fontname:Arial" attrname="SymbolName" x="216" y="-520" type="symbol" />
23
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-480" type="pin Go" />
24
+        <line x2="0" y1="-480" y2="-480" x1="64" />
25
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-416" type="pin Address(7:0)" />
26
+        <rect width="64" x="0" y="-428" height="24" />
27
+        <line x2="0" y1="-416" y2="-416" x1="64" />
28
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-352" type="pin ReadCnt(3:0)" />
29
+        <rect width="64" x="0" y="-364" height="24" />
30
+        <line x2="0" y1="-352" y2="-352" x1="64" />
31
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="392" y="-480" type="pin SDA" />
32
+        <line x2="464" y1="-480" y2="-480" x1="400" />
33
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="392" y="-416" type="pin SCL" />
34
+        <line x2="464" y1="-416" y2="-416" x1="400" />
35
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-256" type="pin FIFO_Pop" />
36
+        <line x2="0" y1="-256" y2="-256" x1="64" />
37
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-192" type="pin FIFO_Push" />
38
+        <line x2="0" y1="-192" y2="-192" x1="64" />
39
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-128" type="pin FIFO_DI(7:0)" />
40
+        <rect width="64" x="0" y="-140" height="24" />
41
+        <line x2="0" y1="-128" y2="-128" x1="64" />
42
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="392" y="-256" type="pin FIFO_Empty" />
43
+        <line x2="464" y1="-256" y2="-256" x1="400" />
44
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="392" y="-192" type="pin FIFO_Full" />
45
+        <line x2="464" y1="-192" y2="-192" x1="400" />
46
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="392" y="-128" type="pin FIFO_DO(7:0)" />
47
+        <rect width="64" x="400" y="-140" height="24" />
48
+        <line x2="464" y1="-128" y2="-128" x1="400" />
49
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-32" type="pin Reset" />
50
+        <line x2="0" y1="-32" y2="-32" x1="64" />
51
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="32" type="pin Clk" />
52
+        <line x2="0" y1="32" y2="32" x1="64" />
53
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="392" y="-32" type="pin Busy" />
54
+        <line x2="464" y1="-32" y2="-32" x1="400" />
55
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="392" y="32" type="pin NACK" />
56
+        <line x2="464" y1="32" y2="32" x1="400" />
57
+    </graph>
58
+</symbol>

+ 2348
- 0
ucisw2_magnetometr/I2C_Master.vhd
Fichier diff supprimé car celui-ci est trop grand
Voir le fichier


+ 5
- 0
ucisw2_magnetometr/MagnetoHMC5883LCtrl.jhd Voir le fichier

@@ -0,0 +1,5 @@
1
+MODULE MagnetoHMC5883LCtrl
2
+	SUBMODULE I2C_Master
3
+		INSTANCE I2CCtrl
4
+	SUBMODULE Magneto_Drv
5
+		INSTANCE MagnetoInterface

+ 270
- 0
ucisw2_magnetometr/MagnetoHMC5883LCtrl.sch Voir le fichier

@@ -0,0 +1,270 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<drawing version="7">
3
+    <attr value="spartan6" name="DeviceFamilyName">
4
+        <trait delete="all:0" />
5
+        <trait editname="all:0" />
6
+        <trait edittrait="all:0" />
7
+    </attr>
8
+    <netlist>
9
+        <signal name="XLXN_5" />
10
+        <signal name="OutputRate(2:0)" />
11
+        <signal name="Clk" />
12
+        <signal name="XLXN_6" />
13
+        <signal name="XLXN_27(7:0)" />
14
+        <signal name="XLXN_28(7:0)" />
15
+        <signal name="XLXN_29(3:0)" />
16
+        <signal name="XLXN_4" />
17
+        <signal name="XLXN_52" />
18
+        <signal name="XLXN_54" />
19
+        <signal name="XLXN_55" />
20
+        <signal name="XLXN_57(7:0)" />
21
+        <signal name="DRDY" />
22
+        <signal name="DR_New" />
23
+        <signal name="ID(23:0)" />
24
+        <signal name="DRX(15:0)" />
25
+        <signal name="DRY(15:0)" />
26
+        <signal name="DRZ(15:0)" />
27
+        <signal name="SDA" />
28
+        <signal name="SCL" />
29
+        <signal name="NACK" />
30
+        <signal name="Reset" />
31
+        <port polarity="Input" name="OutputRate(2:0)" />
32
+        <port polarity="Input" name="Clk" />
33
+        <port polarity="Input" name="DRDY" />
34
+        <port polarity="Output" name="DR_New" />
35
+        <port polarity="Output" name="ID(23:0)" />
36
+        <port polarity="Output" name="DRX(15:0)" />
37
+        <port polarity="Output" name="DRY(15:0)" />
38
+        <port polarity="Output" name="DRZ(15:0)" />
39
+        <port polarity="BiDirectional" name="SDA" />
40
+        <port polarity="BiDirectional" name="SCL" />
41
+        <port polarity="Output" name="NACK" />
42
+        <port polarity="Input" name="Reset" />
43
+        <blockdef name="I2C_Master">
44
+            <timestamp>2015-11-24T14:12:50</timestamp>
45
+            <rect width="336" x="64" y="-512" height="572" />
46
+            <line x2="0" y1="-480" y2="-480" x1="64" />
47
+            <rect width="64" x="0" y="-428" height="24" />
48
+            <line x2="0" y1="-416" y2="-416" x1="64" />
49
+            <rect width="64" x="0" y="-364" height="24" />
50
+            <line x2="0" y1="-352" y2="-352" x1="64" />
51
+            <line x2="464" y1="-480" y2="-480" x1="400" />
52
+            <line x2="464" y1="-416" y2="-416" x1="400" />
53
+            <line x2="0" y1="-256" y2="-256" x1="64" />
54
+            <line x2="0" y1="-192" y2="-192" x1="64" />
55
+            <rect width="64" x="0" y="-140" height="24" />
56
+            <line x2="0" y1="-128" y2="-128" x1="64" />
57
+            <line x2="464" y1="-256" y2="-256" x1="400" />
58
+            <line x2="464" y1="-192" y2="-192" x1="400" />
59
+            <rect width="64" x="400" y="-140" height="24" />
60
+            <line x2="464" y1="-128" y2="-128" x1="400" />
61
+            <line x2="0" y1="-32" y2="-32" x1="64" />
62
+            <line x2="0" y1="32" y2="32" x1="64" />
63
+            <line x2="464" y1="-32" y2="-32" x1="400" />
64
+            <line x2="464" y1="32" y2="32" x1="400" />
65
+        </blockdef>
66
+        <blockdef name="Magneto_Drv">
67
+            <timestamp>2018-4-17T13:58:12</timestamp>
68
+            <rect width="400" x="64" y="-704" height="704" />
69
+            <line x2="0" y1="-672" y2="-672" x1="64" />
70
+            <line x2="0" y1="-592" y2="-592" x1="64" />
71
+            <line x2="0" y1="-512" y2="-512" x1="64" />
72
+            <line x2="0" y1="-432" y2="-432" x1="64" />
73
+            <line x2="0" y1="-352" y2="-352" x1="64" />
74
+            <line x2="0" y1="-272" y2="-272" x1="64" />
75
+            <rect width="64" x="0" y="-204" height="24" />
76
+            <line x2="0" y1="-192" y2="-192" x1="64" />
77
+            <rect width="64" x="0" y="-124" height="24" />
78
+            <line x2="0" y1="-112" y2="-112" x1="64" />
79
+            <line x2="528" y1="-672" y2="-672" x1="464" />
80
+            <line x2="528" y1="-608" y2="-608" x1="464" />
81
+            <line x2="528" y1="-544" y2="-544" x1="464" />
82
+            <line x2="528" y1="-480" y2="-480" x1="464" />
83
+            <rect width="64" x="464" y="-428" height="24" />
84
+            <line x2="528" y1="-416" y2="-416" x1="464" />
85
+            <rect width="64" x="464" y="-364" height="24" />
86
+            <line x2="528" y1="-352" y2="-352" x1="464" />
87
+            <rect width="64" x="464" y="-300" height="24" />
88
+            <line x2="528" y1="-288" y2="-288" x1="464" />
89
+            <rect width="64" x="464" y="-236" height="24" />
90
+            <line x2="528" y1="-224" y2="-224" x1="464" />
91
+            <rect width="64" x="464" y="-172" height="24" />
92
+            <line x2="528" y1="-160" y2="-160" x1="464" />
93
+            <rect width="64" x="464" y="-108" height="24" />
94
+            <line x2="528" y1="-96" y2="-96" x1="464" />
95
+            <rect width="64" x="464" y="-44" height="24" />
96
+            <line x2="528" y1="-32" y2="-32" x1="464" />
97
+        </blockdef>
98
+        <block symbolname="I2C_Master" name="I2CCtrl">
99
+            <blockpin signalname="XLXN_4" name="Go" />
100
+            <blockpin signalname="XLXN_28(7:0)" name="Address(7:0)" />
101
+            <blockpin signalname="XLXN_29(3:0)" name="ReadCnt(3:0)" />
102
+            <blockpin signalname="SDA" name="SDA" />
103
+            <blockpin signalname="SCL" name="SCL" />
104
+            <blockpin signalname="XLXN_6" name="FIFO_Pop" />
105
+            <blockpin signalname="XLXN_5" name="FIFO_Push" />
106
+            <blockpin signalname="XLXN_27(7:0)" name="FIFO_DI(7:0)" />
107
+            <blockpin signalname="XLXN_52" name="FIFO_Empty" />
108
+            <blockpin signalname="XLXN_54" name="FIFO_Full" />
109
+            <blockpin signalname="XLXN_57(7:0)" name="FIFO_DO(7:0)" />
110
+            <blockpin signalname="Reset" name="Reset" />
111
+            <blockpin signalname="Clk" name="Clk" />
112
+            <blockpin signalname="XLXN_55" name="Busy" />
113
+            <blockpin signalname="NACK" name="NACK" />
114
+        </block>
115
+        <block symbolname="Magneto_Drv" name="MagnetoInterface">
116
+            <blockpin signalname="XLXN_52" name="I2C_FIFO_Empty" />
117
+            <blockpin signalname="XLXN_54" name="I2C_FIFO_Full" />
118
+            <blockpin signalname="XLXN_55" name="I2C_Busy" />
119
+            <blockpin signalname="DRDY" name="DRDY" />
120
+            <blockpin signalname="Reset" name="Reset" />
121
+            <blockpin signalname="Clk" name="Clk" />
122
+            <blockpin signalname="XLXN_57(7:0)" name="I2C_FIFO_DO(7:0)" />
123
+            <blockpin signalname="OutputRate(2:0)" name="OutputRate(2:0)" />
124
+            <blockpin signalname="XLXN_4" name="I2C_Go" />
125
+            <blockpin signalname="XLXN_5" name="I2C_FIFO_Push" />
126
+            <blockpin signalname="XLXN_6" name="I2C_FIFO_Pop" />
127
+            <blockpin signalname="DR_New" name="DR_New" />
128
+            <blockpin signalname="XLXN_27(7:0)" name="I2C_FIFO_DI(7:0)" />
129
+            <blockpin signalname="XLXN_28(7:0)" name="I2C_Addr(7:0)" />
130
+            <blockpin signalname="XLXN_29(3:0)" name="I2C_ReadCnt(3:0)" />
131
+            <blockpin signalname="ID(23:0)" name="ID(23:0)" />
132
+            <blockpin signalname="DRX(15:0)" name="DRX(15:0)" />
133
+            <blockpin signalname="DRY(15:0)" name="DRY(15:0)" />
134
+            <blockpin signalname="DRZ(15:0)" name="DRZ(15:0)" />
135
+        </block>
136
+    </netlist>
137
+    <sheet sheetnum="1" width="3520" height="2720">
138
+        <branch name="XLXN_5">
139
+            <wire x2="1328" y1="720" y2="720" x1="1008" />
140
+            <wire x2="1328" y1="528" y2="720" x1="1328" />
141
+            <wire x2="1408" y1="528" y2="528" x1="1328" />
142
+        </branch>
143
+        <branch name="OutputRate(2:0)">
144
+            <wire x2="464" y1="1216" y2="1216" x1="256" />
145
+            <wire x2="480" y1="1216" y2="1216" x1="464" />
146
+        </branch>
147
+        <branch name="Clk">
148
+            <wire x2="304" y1="1056" y2="1056" x1="256" />
149
+            <wire x2="480" y1="1056" y2="1056" x1="304" />
150
+            <wire x2="304" y1="1056" y2="1440" x1="304" />
151
+            <wire x2="1392" y1="1440" y2="1440" x1="304" />
152
+            <wire x2="1408" y1="752" y2="752" x1="1392" />
153
+            <wire x2="1392" y1="752" y2="1440" x1="1392" />
154
+        </branch>
155
+        <branch name="XLXN_6">
156
+            <wire x2="1296" y1="784" y2="784" x1="1008" />
157
+            <wire x2="1296" y1="464" y2="784" x1="1296" />
158
+            <wire x2="1408" y1="464" y2="464" x1="1296" />
159
+        </branch>
160
+        <branch name="XLXN_27(7:0)">
161
+            <wire x2="1264" y1="912" y2="912" x1="1008" />
162
+            <wire x2="1264" y1="592" y2="912" x1="1264" />
163
+            <wire x2="1408" y1="592" y2="592" x1="1264" />
164
+        </branch>
165
+        <branch name="XLXN_28(7:0)">
166
+            <wire x2="1232" y1="976" y2="976" x1="1008" />
167
+            <wire x2="1232" y1="304" y2="976" x1="1232" />
168
+            <wire x2="1408" y1="304" y2="304" x1="1232" />
169
+        </branch>
170
+        <branch name="XLXN_29(3:0)">
171
+            <wire x2="1200" y1="1040" y2="1040" x1="1008" />
172
+            <wire x2="1200" y1="368" y2="1040" x1="1200" />
173
+            <wire x2="1408" y1="368" y2="368" x1="1200" />
174
+        </branch>
175
+        <branch name="XLXN_4">
176
+            <wire x2="1168" y1="656" y2="656" x1="1008" />
177
+            <wire x2="1408" y1="240" y2="240" x1="1168" />
178
+            <wire x2="1168" y1="240" y2="656" x1="1168" />
179
+        </branch>
180
+        <instance x="1408" y="720" name="I2CCtrl" orien="R0">
181
+        </instance>
182
+        <branch name="XLXN_52">
183
+            <wire x2="432" y1="112" y2="656" x1="432" />
184
+            <wire x2="480" y1="656" y2="656" x1="432" />
185
+            <wire x2="1936" y1="112" y2="112" x1="432" />
186
+            <wire x2="1936" y1="112" y2="464" x1="1936" />
187
+            <wire x2="1936" y1="464" y2="464" x1="1872" />
188
+        </branch>
189
+        <branch name="XLXN_54">
190
+            <wire x2="400" y1="80" y2="736" x1="400" />
191
+            <wire x2="480" y1="736" y2="736" x1="400" />
192
+            <wire x2="1968" y1="80" y2="80" x1="400" />
193
+            <wire x2="1968" y1="80" y2="528" x1="1968" />
194
+            <wire x2="1968" y1="528" y2="528" x1="1872" />
195
+        </branch>
196
+        <branch name="XLXN_55">
197
+            <wire x2="336" y1="16" y2="816" x1="336" />
198
+            <wire x2="480" y1="816" y2="816" x1="336" />
199
+            <wire x2="2032" y1="16" y2="16" x1="336" />
200
+            <wire x2="2032" y1="16" y2="688" x1="2032" />
201
+            <wire x2="2032" y1="688" y2="688" x1="1872" />
202
+        </branch>
203
+        <branch name="XLXN_57(7:0)">
204
+            <wire x2="368" y1="48" y2="1136" x1="368" />
205
+            <wire x2="480" y1="1136" y2="1136" x1="368" />
206
+            <wire x2="2000" y1="48" y2="48" x1="368" />
207
+            <wire x2="2000" y1="48" y2="592" x1="2000" />
208
+            <wire x2="2000" y1="592" y2="592" x1="1872" />
209
+        </branch>
210
+        <instance x="480" y="1328" name="MagnetoInterface" orien="R0">
211
+        </instance>
212
+        <branch name="DRDY">
213
+            <wire x2="480" y1="896" y2="896" x1="464" />
214
+            <wire x2="464" y1="896" y2="1376" x1="464" />
215
+            <wire x2="2080" y1="1376" y2="1376" x1="464" />
216
+        </branch>
217
+        <branch name="DR_New">
218
+            <wire x2="1024" y1="848" y2="848" x1="1008" />
219
+            <wire x2="2080" y1="848" y2="848" x1="1024" />
220
+        </branch>
221
+        <branch name="ID(23:0)">
222
+            <wire x2="1024" y1="1104" y2="1104" x1="1008" />
223
+            <wire x2="2080" y1="1104" y2="1104" x1="1024" />
224
+        </branch>
225
+        <branch name="DRX(15:0)">
226
+            <wire x2="1024" y1="1168" y2="1168" x1="1008" />
227
+            <wire x2="2080" y1="1168" y2="1168" x1="1024" />
228
+        </branch>
229
+        <branch name="DRY(15:0)">
230
+            <wire x2="1024" y1="1232" y2="1232" x1="1008" />
231
+            <wire x2="2080" y1="1232" y2="1232" x1="1024" />
232
+        </branch>
233
+        <branch name="DRZ(15:0)">
234
+            <wire x2="1024" y1="1296" y2="1296" x1="1008" />
235
+            <wire x2="2080" y1="1296" y2="1296" x1="1024" />
236
+        </branch>
237
+        <branch name="SDA">
238
+            <wire x2="1888" y1="240" y2="240" x1="1872" />
239
+            <wire x2="2080" y1="240" y2="240" x1="1888" />
240
+        </branch>
241
+        <branch name="SCL">
242
+            <wire x2="1888" y1="304" y2="304" x1="1872" />
243
+            <wire x2="2080" y1="304" y2="304" x1="1888" />
244
+        </branch>
245
+        <branch name="NACK">
246
+            <wire x2="1888" y1="752" y2="752" x1="1872" />
247
+            <wire x2="2080" y1="752" y2="752" x1="1888" />
248
+        </branch>
249
+        <branch name="Reset">
250
+            <wire x2="336" y1="976" y2="976" x1="240" />
251
+            <wire x2="480" y1="976" y2="976" x1="336" />
252
+            <wire x2="336" y1="976" y2="1408" x1="336" />
253
+            <wire x2="1360" y1="1408" y2="1408" x1="336" />
254
+            <wire x2="1360" y1="688" y2="1408" x1="1360" />
255
+            <wire x2="1408" y1="688" y2="688" x1="1360" />
256
+        </branch>
257
+        <iomarker fontsize="28" x="2080" y="304" name="SCL" orien="R0" />
258
+        <iomarker fontsize="28" x="2080" y="240" name="SDA" orien="R0" />
259
+        <iomarker fontsize="28" x="2080" y="752" name="NACK" orien="R0" />
260
+        <iomarker fontsize="28" x="2080" y="1376" name="DRDY" orien="R0" />
261
+        <iomarker fontsize="28" x="2080" y="848" name="DR_New" orien="R0" />
262
+        <iomarker fontsize="28" x="2080" y="1104" name="ID(23:0)" orien="R0" />
263
+        <iomarker fontsize="28" x="2080" y="1168" name="DRX(15:0)" orien="R0" />
264
+        <iomarker fontsize="28" x="2080" y="1232" name="DRY(15:0)" orien="R0" />
265
+        <iomarker fontsize="28" x="2080" y="1296" name="DRZ(15:0)" orien="R0" />
266
+        <iomarker fontsize="28" x="256" y="1216" name="OutputRate(2:0)" orien="R180" />
267
+        <iomarker fontsize="28" x="256" y="1056" name="Clk" orien="R180" />
268
+        <iomarker fontsize="28" x="240" y="976" name="Reset" orien="R180" />
269
+    </sheet>
270
+</drawing>

+ 50
- 0
ucisw2_magnetometr/MagnetoHMC5883LCtrl.sym Voir le fichier

@@ -0,0 +1,50 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<symbol version="7" name="MagnetoHMC5883LCtrl">
3
+    <symboltype>BLOCK</symboltype>
4
+    <timestamp>2018-5-25T11:43:31</timestamp>
5
+    <pin polarity="Input" x="0" y="-480" name="OutputRate(2:0)" />
6
+    <pin polarity="Input" x="0" y="-336" name="Clk" />
7
+    <pin polarity="Input" x="0" y="-192" name="Reset" />
8
+    <pin polarity="Input" x="0" y="-48" name="DRDY" />
9
+    <pin polarity="Output" x="432" y="-480" name="DR_New" />
10
+    <pin polarity="Output" x="432" y="-416" name="ID(23:0)" />
11
+    <pin polarity="Output" x="432" y="-352" name="DRX(15:0)" />
12
+    <pin polarity="Output" x="432" y="-288" name="DRY(15:0)" />
13
+    <pin polarity="Output" x="432" y="-224" name="DRZ(15:0)" />
14
+    <pin polarity="Output" x="432" y="-160" name="NACK" />
15
+    <pin polarity="BiDirectional" x="432" y="-96" name="SDA" />
16
+    <pin polarity="BiDirectional" x="432" y="-32" name="SCL" />
17
+    <graph>
18
+        <rect width="304" x="64" y="-512" height="512" />
19
+        <attrtext style="alignment:BCENTER;fontsize:56;fontname:Arial" attrname="SymbolName" x="216" y="-520" type="symbol" />
20
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-480" type="pin OutputRate(2:0)" />
21
+        <rect width="64" x="0" y="-492" height="24" />
22
+        <line x2="0" y1="-480" y2="-480" x1="64" />
23
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-336" type="pin Clk" />
24
+        <line x2="0" y1="-336" y2="-336" x1="64" />
25
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-192" type="pin Reset" />
26
+        <line x2="0" y1="-192" y2="-192" x1="64" />
27
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-48" type="pin DRDY" />
28
+        <line x2="0" y1="-48" y2="-48" x1="64" />
29
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="360" y="-480" type="pin DR_New" />
30
+        <line x2="432" y1="-480" y2="-480" x1="368" />
31
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="360" y="-416" type="pin ID(23:0)" />
32
+        <rect width="64" x="368" y="-428" height="24" />
33
+        <line x2="432" y1="-416" y2="-416" x1="368" />
34
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="360" y="-352" type="pin DRX(15:0)" />
35
+        <rect width="64" x="368" y="-364" height="24" />
36
+        <line x2="432" y1="-352" y2="-352" x1="368" />
37
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="360" y="-288" type="pin DRY(15:0)" />
38
+        <rect width="64" x="368" y="-300" height="24" />
39
+        <line x2="432" y1="-288" y2="-288" x1="368" />
40
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="360" y="-224" type="pin DRZ(15:0)" />
41
+        <rect width="64" x="368" y="-236" height="24" />
42
+        <line x2="432" y1="-224" y2="-224" x1="368" />
43
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="360" y="-160" type="pin NACK" />
44
+        <line x2="432" y1="-160" y2="-160" x1="368" />
45
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="360" y="-96" type="pin SDA" />
46
+        <line x2="432" y1="-96" y2="-96" x1="368" />
47
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="360" y="-32" type="pin SCL" />
48
+        <line x2="432" y1="-32" y2="-32" x1="368" />
49
+    </graph>
50
+</symbol>

+ 135
- 0
ucisw2_magnetometr/MagnetoHMC5883LCtrl.vhf Voir le fichier

@@ -0,0 +1,135 @@
1
+--------------------------------------------------------------------------------
2
+-- Copyright (c) 1995-2013 Xilinx, Inc.  All rights reserved.
3
+--------------------------------------------------------------------------------
4
+--   ____  ____ 
5
+--  /   /\/   / 
6
+-- /___/  \  /    Vendor: Xilinx 
7
+-- \   \   \/     Version : 14.7
8
+--  \   \         Application : sch2hdl
9
+--  /   /         Filename : MagnetoHMC5883LCtrl.vhf
10
+-- /___/   /\     Timestamp : 05/28/2018 20:43:29
11
+-- \   \  /  \ 
12
+--  \___\/\___\ 
13
+--
14
+--Command: sch2hdl -intstyle ise -family spartan6 -flat -suppress -vhdl D:/XilinxPrj/ucisw2_magnetometr/MagnetoHMC5883LCtrl.vhf -w D:/XilinxPrj/ucisw2_magnetometr/MagnetoHMC5883LCtrl.sch
15
+--Design Name: MagnetoHMC5883LCtrl
16
+--Device: spartan6
17
+--Purpose:
18
+--    This vhdl netlist is translated from an ECS schematic. It can be 
19
+--    synthesized and simulated, but it should not be modified. 
20
+--
21
+
22
+library ieee;
23
+use ieee.std_logic_1164.ALL;
24
+use ieee.numeric_std.ALL;
25
+library UNISIM;
26
+use UNISIM.Vcomponents.ALL;
27
+
28
+entity MagnetoHMC5883LCtrl is
29
+   port ( Clk        : in    std_logic; 
30
+          DRDY       : in    std_logic; 
31
+          OutputRate : in    std_logic_vector (2 downto 0); 
32
+          Reset      : in    std_logic; 
33
+          DRX        : out   std_logic_vector (15 downto 0); 
34
+          DRY        : out   std_logic_vector (15 downto 0); 
35
+          DRZ        : out   std_logic_vector (15 downto 0); 
36
+          DR_New     : out   std_logic; 
37
+          ID         : out   std_logic_vector (23 downto 0); 
38
+          NACK       : out   std_logic; 
39
+          SCL        : inout std_logic; 
40
+          SDA        : inout std_logic);
41
+end MagnetoHMC5883LCtrl;
42
+
43
+architecture BEHAVIORAL of MagnetoHMC5883LCtrl is
44
+   signal XLXN_4     : std_logic;
45
+   signal XLXN_5     : std_logic;
46
+   signal XLXN_6     : std_logic;
47
+   signal XLXN_27    : std_logic_vector (7 downto 0);
48
+   signal XLXN_28    : std_logic_vector (7 downto 0);
49
+   signal XLXN_29    : std_logic_vector (3 downto 0);
50
+   signal XLXN_52    : std_logic;
51
+   signal XLXN_54    : std_logic;
52
+   signal XLXN_55    : std_logic;
53
+   signal XLXN_57    : std_logic_vector (7 downto 0);
54
+   component I2C_Master
55
+      port ( Go         : in    std_logic; 
56
+             Address    : in    std_logic_vector (7 downto 0); 
57
+             ReadCnt    : in    std_logic_vector (3 downto 0); 
58
+             SDA        : inout std_logic; 
59
+             SCL        : inout std_logic; 
60
+             FIFO_Pop   : in    std_logic; 
61
+             FIFO_Push  : in    std_logic; 
62
+             FIFO_DI    : in    std_logic_vector (7 downto 0); 
63
+             FIFO_Empty : out   std_logic; 
64
+             FIFO_Full  : out   std_logic; 
65
+             FIFO_DO    : out   std_logic_vector (7 downto 0); 
66
+             Reset      : in    std_logic; 
67
+             Clk        : in    std_logic; 
68
+             Busy       : out   std_logic; 
69
+             NACK       : out   std_logic);
70
+   end component;
71
+   
72
+   component Magneto_Drv
73
+      port ( I2C_FIFO_Empty : in    std_logic; 
74
+             I2C_FIFO_Full  : in    std_logic; 
75
+             I2C_Busy       : in    std_logic; 
76
+             DRDY           : in    std_logic; 
77
+             Reset          : in    std_logic; 
78
+             Clk            : in    std_logic; 
79
+             I2C_FIFO_DO    : in    std_logic_vector (7 downto 0); 
80
+             OutputRate     : in    std_logic_vector (2 downto 0); 
81
+             I2C_Go         : out   std_logic; 
82
+             I2C_FIFO_Push  : out   std_logic; 
83
+             I2C_FIFO_Pop   : out   std_logic; 
84
+             DR_New         : out   std_logic; 
85
+             I2C_FIFO_DI    : out   std_logic_vector (7 downto 0); 
86
+             I2C_Addr       : out   std_logic_vector (7 downto 0); 
87
+             I2C_ReadCnt    : out   std_logic_vector (3 downto 0); 
88
+             ID             : out   std_logic_vector (23 downto 0); 
89
+             DRX            : out   std_logic_vector (15 downto 0); 
90
+             DRY            : out   std_logic_vector (15 downto 0); 
91
+             DRZ            : out   std_logic_vector (15 downto 0));
92
+   end component;
93
+   
94
+begin
95
+   I2CCtrl : I2C_Master
96
+      port map (Address(7 downto 0)=>XLXN_28(7 downto 0),
97
+                Clk=>Clk,
98
+                FIFO_DI(7 downto 0)=>XLXN_27(7 downto 0),
99
+                FIFO_Pop=>XLXN_6,
100
+                FIFO_Push=>XLXN_5,
101
+                Go=>XLXN_4,
102
+                ReadCnt(3 downto 0)=>XLXN_29(3 downto 0),
103
+                Reset=>Reset,
104
+                Busy=>XLXN_55,
105
+                FIFO_DO(7 downto 0)=>XLXN_57(7 downto 0),
106
+                FIFO_Empty=>XLXN_52,
107
+                FIFO_Full=>XLXN_54,
108
+                NACK=>NACK,
109
+                SCL=>SCL,
110
+                SDA=>SDA);
111
+   
112
+   MagnetoInterface : Magneto_Drv
113
+      port map (Clk=>Clk,
114
+                DRDY=>DRDY,
115
+                I2C_Busy=>XLXN_55,
116
+                I2C_FIFO_DO(7 downto 0)=>XLXN_57(7 downto 0),
117
+                I2C_FIFO_Empty=>XLXN_52,
118
+                I2C_FIFO_Full=>XLXN_54,
119
+                OutputRate(2 downto 0)=>OutputRate(2 downto 0),
120
+                Reset=>Reset,
121
+                DRX(15 downto 0)=>DRX(15 downto 0),
122
+                DRY(15 downto 0)=>DRY(15 downto 0),
123
+                DRZ(15 downto 0)=>DRZ(15 downto 0),
124
+                DR_New=>DR_New,
125
+                ID(23 downto 0)=>ID(23 downto 0),
126
+                I2C_Addr(7 downto 0)=>XLXN_28(7 downto 0),
127
+                I2C_FIFO_DI(7 downto 0)=>XLXN_27(7 downto 0),
128
+                I2C_FIFO_Pop=>XLXN_6,
129
+                I2C_FIFO_Push=>XLXN_5,
130
+                I2C_Go=>XLXN_4,
131
+                I2C_ReadCnt(3 downto 0)=>XLXN_29(3 downto 0));
132
+   
133
+end BEHAVIORAL;
134
+
135
+

+ 19
- 0
ucisw2_magnetometr/Magneto_Drv.spl Voir le fichier

@@ -0,0 +1,19 @@
1
+[Inputs]
2
+I2C_FIFO_Empty
3
+I2C_FIFO_Full
4
+I2C_Busy
5
+DRDY
6
+Disp_Busy
7
+Start
8
+Reset
9
+Clk
10
+=I2C_FIFO_DO[7:0]=
11
+[Outputs]
12
+I2C_Go
13
+I2C_FIFO_Push
14
+I2C_FIFO_Pop
15
+Disp_Start
16
+=I2C_FIFO_DI[7:0]=
17
+=I2C_Addr[7:0]=
18
+=I2C_ReadCnt[3:0]=
19
+[BiDir]

+ 75
- 0
ucisw2_magnetometr/Magneto_Drv.sym Voir le fichier

@@ -0,0 +1,75 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<symbol version="7" name="Magneto_Drv">
3
+    <symboltype>BLOCK</symboltype>
4
+    <timestamp>2018-4-17T13:58:10</timestamp>
5
+    <pin polarity="Input" x="0" y="-672" name="I2C_FIFO_Empty" />
6
+    <pin polarity="Input" x="0" y="-592" name="I2C_FIFO_Full" />
7
+    <pin polarity="Input" x="0" y="-512" name="I2C_Busy" />
8
+    <pin polarity="Input" x="0" y="-432" name="DRDY" />
9
+    <pin polarity="Input" x="0" y="-352" name="Reset" />
10
+    <pin polarity="Input" x="0" y="-272" name="Clk" />
11
+    <pin polarity="Input" x="0" y="-192" name="I2C_FIFO_DO(7:0)" />
12
+    <pin polarity="Input" x="0" y="-112" name="OutputRate(2:0)" />
13
+    <pin polarity="Output" x="528" y="-672" name="I2C_Go" />
14
+    <pin polarity="Output" x="528" y="-608" name="I2C_FIFO_Push" />
15
+    <pin polarity="Output" x="528" y="-544" name="I2C_FIFO_Pop" />
16
+    <pin polarity="Output" x="528" y="-480" name="DR_New" />
17
+    <pin polarity="Output" x="528" y="-416" name="I2C_FIFO_DI(7:0)" />
18
+    <pin polarity="Output" x="528" y="-352" name="I2C_Addr(7:0)" />
19
+    <pin polarity="Output" x="528" y="-288" name="I2C_ReadCnt(3:0)" />
20
+    <pin polarity="Output" x="528" y="-224" name="ID(23:0)" />
21
+    <pin polarity="Output" x="528" y="-160" name="DRX(15:0)" />
22
+    <pin polarity="Output" x="528" y="-96" name="DRY(15:0)" />
23
+    <pin polarity="Output" x="528" y="-32" name="DRZ(15:0)" />
24
+    <graph>
25
+        <rect width="400" x="64" y="-704" height="704" />
26
+        <attrtext style="alignment:BCENTER;fontsize:56;fontname:Arial" attrname="SymbolName" x="264" y="-712" type="symbol" />
27
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-672" type="pin I2C_FIFO_Empty" />
28
+        <line x2="0" y1="-672" y2="-672" x1="64" />
29
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-592" type="pin I2C_FIFO_Full" />
30
+        <line x2="0" y1="-592" y2="-592" x1="64" />
31
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-512" type="pin I2C_Busy" />
32
+        <line x2="0" y1="-512" y2="-512" x1="64" />
33
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-432" type="pin DRDY" />
34
+        <line x2="0" y1="-432" y2="-432" x1="64" />
35
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-352" type="pin Reset" />
36
+        <line x2="0" y1="-352" y2="-352" x1="64" />
37
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-272" type="pin Clk" />
38
+        <line x2="0" y1="-272" y2="-272" x1="64" />
39
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-192" type="pin I2C_FIFO_DO(7:0)" />
40
+        <rect width="64" x="0" y="-204" height="24" />
41
+        <line x2="0" y1="-192" y2="-192" x1="64" />
42
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-112" type="pin OutputRate(2:0)" />
43
+        <rect width="64" x="0" y="-124" height="24" />
44
+        <line x2="0" y1="-112" y2="-112" x1="64" />
45
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="456" y="-672" type="pin I2C_Go" />
46
+        <line x2="528" y1="-672" y2="-672" x1="464" />
47
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="456" y="-608" type="pin I2C_FIFO_Push" />
48
+        <line x2="528" y1="-608" y2="-608" x1="464" />
49
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="456" y="-544" type="pin I2C_FIFO_Pop" />
50
+        <line x2="528" y1="-544" y2="-544" x1="464" />
51
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="456" y="-480" type="pin DR_New" />
52
+        <line x2="528" y1="-480" y2="-480" x1="464" />
53
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="456" y="-416" type="pin I2C_FIFO_DI(7:0)" />
54
+        <rect width="64" x="464" y="-428" height="24" />
55
+        <line x2="528" y1="-416" y2="-416" x1="464" />
56
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="456" y="-352" type="pin I2C_Addr(7:0)" />
57
+        <rect width="64" x="464" y="-364" height="24" />
58
+        <line x2="528" y1="-352" y2="-352" x1="464" />
59
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="456" y="-288" type="pin I2C_ReadCnt(3:0)" />
60
+        <rect width="64" x="464" y="-300" height="24" />
61
+        <line x2="528" y1="-288" y2="-288" x1="464" />
62
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="456" y="-224" type="pin ID(23:0)" />
63
+        <rect width="64" x="464" y="-236" height="24" />
64
+        <line x2="528" y1="-224" y2="-224" x1="464" />
65
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="456" y="-160" type="pin DRX(15:0)" />
66
+        <rect width="64" x="464" y="-172" height="24" />
67
+        <line x2="528" y1="-160" y2="-160" x1="464" />
68
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="456" y="-96" type="pin DRY(15:0)" />
69
+        <rect width="64" x="464" y="-108" height="24" />
70
+        <line x2="528" y1="-96" y2="-96" x1="464" />
71
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="456" y="-32" type="pin DRZ(15:0)" />
72
+        <rect width="64" x="464" y="-44" height="24" />
73
+        <line x2="528" y1="-32" y2="-32" x1="464" />
74
+    </graph>
75
+</symbol>

+ 310
- 0
ucisw2_magnetometr/Magneto_Drv.vhd Voir le fichier

@@ -0,0 +1,310 @@
1
+----------------------------------------------------------------------------------
2
+-- Company: 
3
+-- Engineer: 
4
+-- 
5
+-- Create Date:    17:16:45 02/27/2018 
6
+-- Design Name: 
7
+-- Module Name:    Magneto_Drv - 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
+
23
+-- Uncomment the following library declaration if using
24
+-- arithmetic functions with Signed or Unsigned values
25
+use IEEE.NUMERIC_STD.ALL;
26
+
27
+-- Uncomment the following library declaration if instantiating
28
+-- any Xilinx primitives in this code.
29
+--library UNISIM;
30
+--use UNISIM.VComponents.all;
31
+
32
+entity Magneto_Drv is
33
+    Port ( I2C_FIFO_Empty : in  STD_LOGIC;
34
+           I2C_FIFO_Full : in  STD_LOGIC;
35
+           I2C_FIFO_DO : in  STD_LOGIC_VECTOR (7 downto 0);
36
+           I2C_Busy : in  STD_LOGIC;
37
+           DRDY : in  STD_LOGIC;
38
+           OutputRate : in STD_LOGIC_VECTOR (2 downto 0); 
39
+           Reset : in  STD_LOGIC;
40
+           Clk : in  STD_LOGIC;
41
+           I2C_Go : out  STD_LOGIC;
42
+           I2C_FIFO_Push : out  STD_LOGIC;
43
+           I2C_FIFO_Pop : out  STD_LOGIC;
44
+           I2C_FIFO_DI : out  STD_LOGIC_VECTOR (7 downto 0);
45
+           I2C_Addr : out  STD_LOGIC_VECTOR (7 downto 0);
46
+           I2C_ReadCnt : out  STD_LOGIC_VECTOR (3 downto 0);
47
+           ID : out  STD_LOGIC_VECTOR (23 downto 0);
48
+           DRX : out  STD_LOGIC_VECTOR (15 downto 0);
49
+           DRY : out  STD_LOGIC_VECTOR (15 downto 0);
50
+           DRZ : out  STD_LOGIC_VECTOR (15 downto 0);
51
+           DR_New : out  STD_LOGIC);
52
+end Magneto_Drv;
53
+
54
+architecture Behavioral of Magneto_Drv is
55
+	-- Main state machine
56
+   type state_type is ( Init, PushAddrID, SendAddrID, BusyAddrID, ReceiveID, BusyID, ReadID, PopID, CheckID, 
57
+                        PushAddrConfigA, PushDataConfigA, SendConfigA, BusyConfigA, PushAddrMode, PushDataMode, 
58
+                        SendMode, BusyMode, MeasureWait, MeasureReceive, MeasureBusy, MeasureRead, MeasurePop, 
59
+                        MeasureCheck, MeasureLoad, MeasureOutput, MeasurePushAddr, MeasureSendAddr, MeasureBusyAddr  );
60
+	signal state, next_state : state_type;
61
+   
62
+	-- DRDY synchronized input
63
+	signal DRDY_in : STD_LOGIC;
64
+	
65
+	-- Input registers
66
+   signal ID_reg : STD_LOGIC_VECTOR (23 downto 0);
67
+   signal Input : STD_LOGIC_VECTOR (47 downto 0);
68
+   
69
+   -- Input byte counter
70
+	signal bytes : integer range 0 to 5 := 0;
71
+   
72
+   -- Measure output registers
73
+   signal DRX_reg : STD_LOGIC_VECTOR (15 downto 0);
74
+   signal DRY_reg : STD_LOGIC_VECTOR (15 downto 0);
75
+   signal DRZ_reg : STD_LOGIC_VECTOR (15 downto 0);
76
+
77
+begin
78
+	-- DRDY input synchronization to internal clock
79
+	sync_process : process(Clk, Reset)
80
+	begin
81
+		if Reset = '1' then
82
+			DRDY_in <= '0';
83
+		elsif rising_edge(Clk) then
84
+			DRDY_in <= DRDY;
85
+		end if;
86
+	end process sync_process;
87
+
88
+	-- Main HMC5883L FSM
89
+	-- (continuos measurement)
90
+   process1 : process(Clk)
91
+	begin
92
+		if rising_edge(Clk) then
93
+			if Reset = '1' then
94
+				state <= Init;
95
+			else
96
+				state <= next_state;
97
+			end if;
98
+		end if;
99
+	end process process1;
100
+   
101
+	process2 : process(state, I2C_FIFO_Empty, I2C_Busy, DRDY_in)
102
+	begin
103
+		next_state <= state; -- by default
104
+		
105
+		case state is
106
+         -- Initialization
107
+         -- Reading identification register
108
+			when Init =>
109
+					next_state <= PushAddrID;
110
+			when PushAddrID =>
111
+				next_state <= SendAddrID;
112
+			when SendAddrID =>
113
+				next_state <= BusyAddrID;
114
+			when BusyAddrID =>
115
+				if I2C_Busy = '0' then
116
+					next_state <= ReceiveID;
117
+				end if;
118
+			when ReceiveID =>
119
+				next_state <= BusyID;
120
+			when BusyID =>
121
+				if I2C_Busy = '0' then
122
+					next_state <= ReadID;
123
+				end if;
124
+         when ReadID =>
125
+            next_state <= PopID;
126
+         when PopID =>
127
+            next_state <= CheckID;
128
+         when CheckID =>
129
+            if I2C_FIFO_Empty = '1' then
130
+					next_state <= PushAddrConfigA;
131
+            else
132
+					next_state <= ReadID;
133
+				end if;
134
+         -- Setting data rate and mode
135
+         when PushAddrConfigA =>
136
+				next_state <= PushDataConfigA;
137
+         when PushDataConfigA =>   
138
+            next_state <= SendConfigA;
139
+			when SendConfigA =>
140
+				next_state <= BusyConfigA;
141
+			when BusyConfigA =>
142
+				if I2C_Busy = '0' then
143
+					next_state <= PushAddrMode;
144
+				end if;
145
+         when PushAddrMode =>
146
+				next_state <= PushDataMode;
147
+         when PushDataMode =>   
148
+            next_state <= SendMode;
149
+			when SendMode =>
150
+				next_state <= BusyMode;
151
+			when BusyMode =>
152
+				if I2C_Busy = '0' then
153
+					next_state <= MeasureWait;
154
+				end if;
155
+         -- Measuring...
156
+         when MeasureWait =>
157
+				if DRDY_in = '0' then
158
+					next_state <= MeasureReceive;
159
+				end if;
160
+         when MeasureReceive =>
161
+				next_state <= MeasureBusy;
162
+         when MeasureBusy =>
163
+				if I2C_Busy = '0' then
164
+					next_state <= MeasureRead;
165
+				end if;
166
+         -- Reading results...
167
+         when MeasureRead =>
168
+				next_state <= MeasurePop;
169
+			when MeasurePop =>
170
+				next_state <= MeasureCheck; --
171
+			when MeasureCheck =>
172
+				if I2C_FIFO_Empty = '1' then
173
+					next_state <= MeasureLoad;
174
+            else
175
+					next_state <= MeasureRead;
176
+				end if;
177
+         when MeasureLoad =>
178
+            next_state <= MeasureOutput;
179
+         when MeasureOutput =>
180
+            next_state <= MeasurePushAddr;
181
+         when MeasurePushAddr =>
182
+            next_state <= MeasureSendAddr;
183
+         when MeasureSendAddr =>
184
+            next_state <= MeasureBusyAddr;
185
+         when MeasureBusyAddr =>
186
+            if I2C_Busy = '0' then
187
+					next_state <= MeasureWait;
188
+				end if;
189
+		end case;
190
+	end process process2;
191
+	
192
+   id_register : process(Clk, state, next_state)
193
+	begin
194
+	   if rising_edge(Clk) then
195
+			if state = ReadID then
196
+            case bytes is
197
+               when 0 =>
198
+                  ID_reg(23 downto 16) <= I2C_FIFO_DO;
199
+               when 1 =>
200
+                  ID_reg(15 downto 8) <= I2C_FIFO_DO;
201
+               when 2 =>
202
+                  ID_reg(7 downto 0) <= I2C_FIFO_DO;
203
+               when others =>
204
+                  ID_reg <= X"000000";
205
+            end case;
206
+			end if;
207
+		end if;
208
+	end process id_register;
209
+   
210
+	-- Storing measurements in register
211
+	input_register : process(Clk, state, next_state)
212
+	begin
213
+	   if rising_edge(Clk) then
214
+			if state = MeasureRead then
215
+            case bytes is
216
+               when 0 =>
217
+                  Input(47 downto 40) <= I2C_FIFO_DO;
218
+               when 1 =>
219
+                  Input(39 downto 32) <= I2C_FIFO_DO;
220
+               when 2 =>
221
+                  Input(31 downto 24) <= I2C_FIFO_DO;
222
+               when 3 =>
223
+                  Input(23 downto 16) <= I2C_FIFO_DO;
224
+               when 4 =>
225
+                  Input(15 downto 8) <= I2C_FIFO_DO;
226
+               when 5 =>
227
+                  Input(7 downto 0) <= I2C_FIFO_DO;
228
+            end case;
229
+			end if;
230
+		end if;
231
+	end process input_register;
232
+   
233
+   -- Stored bytes counter
234
+   byte_counter : process(Clk)
235
+	begin
236
+		if rising_edge(Clk) then
237
+			if Reset = '1' then
238
+				bytes <= 0;
239
+			end if;
240
+			if state = MeasurePop then
241
+				if bytes = 5 then
242
+					bytes <= 0;
243
+				else
244
+					bytes <= bytes + 1;
245
+				end if;
246
+			end if;
247
+			if state = PopID then
248
+				if bytes = 2 then
249
+					bytes <= 0;
250
+				else
251
+					bytes <= bytes + 1;
252
+				end if;
253
+			end if;
254
+		end if;
255
+	end process byte_counter;
256
+   
257
+   -- Buffering output in registers
258
+	output_sync : process(Clk, state, next_state)
259
+	begin
260
+	   if rising_edge(Clk) then
261
+			if state = MeasureLoad then
262
+				DRX_reg <= Input(47 downto 32);
263
+				DRZ_reg <= Input(31 downto 16);
264
+				DRY_reg <= Input(15 downto 0);
265
+			end if;
266
+		end if;
267
+	end process output_sync;
268
+   
269
+   -- Output signals for FSM
270
+	I2C_FIFO_DI <=	X"0A" when next_state = PushAddrID or state = PushAddrID else
271
+						X"00" when next_state = PushAddrConfigA or state = PushAddrConfigA else
272
+						"000" & OutputRate & "00" when next_state = PushDataConfigA or state = PushDataConfigA else
273
+						X"02" when next_state = PushAddrMode or state = PushAddrMode else
274
+						X"00" when next_state = PushDataMode or state = PushDataMode else
275
+						X"03" when next_state = MeasurePushAddr or state = MeasurePushAddr else
276
+						X"00";
277
+
278
+	I2C_FIFO_Push <=	'1' when state = PushAddrID or state = PushAddrConfigA or state = PushDataConfigA
279
+								or state = PushAddrMode or state = PushDataMode or state = MeasurePushAddr	else
280
+							'0';
281
+										
282
+	I2C_Addr <=	X"3C" when next_state = SendAddrID or state = SendAddrID or next_state = SendConfigA
283
+						or state = SendConfigA or next_state = SendMode or state = SendMode
284
+						or next_state = MeasureSendAddr or state = MeasureSendAddr else
285
+					X"3D" when next_state = ReceiveID or state = ReceiveID or next_state = MeasureReceive
286
+						or state = MeasureReceive else
287
+					X"00";
288
+									
289
+	I2C_Go <=	'1' when state = SendAddrID or state = ReceiveID or state = SendConfigA or state = SendMode
290
+						or state = MeasureReceive or state = MeasureSendAddr	else
291
+					'0';
292
+					
293
+	I2C_ReadCnt <=	X"3" when next_state = ReceiveID or state = ReceiveID else
294
+						X"6" when next_state = MeasureReceive or state = MeasureReceive else
295
+						X"0";
296
+						
297
+	I2C_FIFO_Pop <=	'1' when state = PopID or state = MeasurePop	else
298
+							'0';
299
+							
300
+   DR_New <=	'1' when state = MeasureOutput else
301
+					'0';
302
+   
303
+	-- Output registers
304
+   ID <= ID_reg;
305
+   DRX <= DRX_reg;
306
+   DRY <= DRY_reg;
307
+   DRZ <= DRZ_reg;
308
+
309
+end Behavioral;
310
+

+ 4
- 0
ucisw2_magnetometr/Magneto_J3.ucf Voir le fichier

@@ -0,0 +1,4 @@
1
+# Magnetometer GY-273 connected to Header J3 (Espier III board)
2
+NET "DRDY" LOC = "P24" | SLEW = SLOW | DRIVE = 6;  # shared with PS2_CLK
3
+NET "SDA"  LOC = "P57" | SLEW = SLOW | DRIVE = 6;
4
+NET "SCL"  LOC = "P58" | SLEW = SLOW | DRIVE = 6;

+ 12
- 0
ucisw2_magnetometr/VGACompass.spl Voir le fichier

@@ -0,0 +1,12 @@
1
+[Inputs]
2
+Reset
3
+Clk
4
+=DRX[15:0]=
5
+=DRY[15:0]=
6
+[Outputs]
7
+H_SYNC
8
+V_SYNC
9
+=V_R[4:0]=
10
+=V_G[5:0]=
11
+=V_B[4:0]=
12
+[BiDir]

+ 41
- 0
ucisw2_magnetometr/VGACompass.sym Voir le fichier

@@ -0,0 +1,41 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<symbol version="7" name="VGACompass">
3
+    <symboltype>BLOCK</symboltype>
4
+    <timestamp>2018-5-28T23:28:4</timestamp>
5
+    <pin polarity="Input" x="0" y="-288" name="Reset" />
6
+    <pin polarity="Input" x="0" y="-208" name="Clk" />
7
+    <pin polarity="Input" x="0" y="-128" name="DRX(15:0)" />
8
+    <pin polarity="Input" x="0" y="-48" name="DRY(15:0)" />
9
+    <pin polarity="Output" x="384" y="-288" name="H_SYNC" />
10
+    <pin polarity="Output" x="384" y="-224" name="V_SYNC" />
11
+    <pin polarity="Output" x="384" y="-160" name="V_R(4:0)" />
12
+    <pin polarity="Output" x="384" y="-96" name="V_G(5:0)" />
13
+    <pin polarity="Output" x="384" y="-32" name="V_B(4:0)" />
14
+    <graph>
15
+        <rect width="256" x="64" y="-320" height="320" />
16
+        <attrtext style="alignment:BCENTER;fontsize:56;fontname:Arial" attrname="SymbolName" x="192" y="-328" type="symbol" />
17
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-288" type="pin Reset" />
18
+        <line x2="0" y1="-288" y2="-288" x1="64" />
19
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-208" type="pin Clk" />
20
+        <line x2="0" y1="-208" y2="-208" x1="64" />
21
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-128" type="pin DRX(15:0)" />
22
+        <rect width="64" x="0" y="-140" height="24" />
23
+        <line x2="0" y1="-128" y2="-128" x1="64" />
24
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-48" type="pin DRY(15:0)" />
25
+        <rect width="64" x="0" y="-60" height="24" />
26
+        <line x2="0" y1="-48" y2="-48" x1="64" />
27
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="312" y="-288" type="pin H_SYNC" />
28
+        <line x2="384" y1="-288" y2="-288" x1="320" />
29
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="312" y="-224" type="pin V_SYNC" />
30
+        <line x2="384" y1="-224" y2="-224" x1="320" />
31
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="312" y="-160" type="pin V_R(4:0)" />
32
+        <rect width="64" x="320" y="-172" height="24" />
33
+        <line x2="384" y1="-160" y2="-160" x1="320" />
34
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="312" y="-96" type="pin V_G(5:0)" />
35
+        <rect width="64" x="320" y="-108" height="24" />
36
+        <line x2="384" y1="-96" y2="-96" x1="320" />
37
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="312" y="-32" type="pin V_B(4:0)" />
38
+        <rect width="64" x="320" y="-44" height="24" />
39
+        <line x2="384" y1="-32" y2="-32" x1="320" />
40
+    </graph>
41
+</symbol>

+ 163
- 0
ucisw2_magnetometr/VGACompass.vhd Voir le fichier

@@ -0,0 +1,163 @@
1
+----------------------------------------------------------------------------------
2
+-- Company: 
3
+-- Engineer: 
4
+-- 
5
+-- Create Date:    13:11:03 05/28/2018 
6
+-- Design Name: 
7
+-- Module Name:    VGACompass - 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
+
23
+-- Uncomment the following library declaration if using
24
+-- arithmetic functions with Signed or Unsigned values
25
+use IEEE.NUMERIC_STD.ALL;
26
+
27
+-- Uncomment the following library declaration if instantiating
28
+-- any Xilinx primitives in this code.
29
+--library UNISIM;
30
+--use UNISIM.VComponents.all;
31
+
32
+entity VGACompass is
33
+    Port ( DRX : in  STD_LOGIC_VECTOR (15 downto 0);
34
+           DRY : in  STD_LOGIC_VECTOR (15 downto 0);
35
+           Reset : in  STD_LOGIC;
36
+           Clk : in  STD_LOGIC;
37
+           V_R : out  STD_LOGIC_VECTOR (4 downto 0);
38
+           V_G : out  STD_LOGIC_VECTOR (5 downto 0);
39
+           V_B : out  STD_LOGIC_VECTOR (4 downto 0);
40
+           H_SYNC : out  STD_LOGIC;
41
+           V_SYNC : out  STD_LOGIC);
42
+end VGACompass;
43
+
44
+architecture Behavioral of VGACompass is
45
+	constant h_pulse : integer := 80;		-- Horiztonal sync pulse width in pixels
46
+	constant h_bp : integer := 160;			-- Horiztonal back porch width in pixels
47
+	constant h_pixels : integer := 800;		-- Horiztonal display width in pixels
48
+	constant h_fp : integer := 16;			-- Horiztonal front porch width in pixels
49
+	constant h_pol : STD_LOGIC := '1';		-- Horizontal sync pulse polarity (1 = positive, 0 = negative)
50
+	constant v_pulse : integer := 3;			-- Vertical sync pulse width in rows
51
+	constant v_bp : integer := 21;			-- Vertical back porch width in rows
52
+	constant v_pixels	: integer := 600;		-- Vertical display width in rows
53
+	constant v_fp : integer := 1;				-- Vertical front porch width in rows
54
+	constant v_pol : STD_LOGIC := '1';		-- Vertical sync pulse polarity (1 = positive, 0 = negative)
55
+	constant	h_period	: integer := h_pulse + h_bp + h_pixels + h_fp;		-- Total number of pixel clocks in a row
56
+	constant	v_period	: integer := v_pulse + v_bp + v_pixels + v_fp;		-- Total number of rows in column
57
+	
58
+	signal disp_ena :	STD_LOGIC;		-- Display enable ('1' = display time, '0' = blanking time)
59
+	signal column : integer;			-- Horizontal pixel coordinate
60
+	signal row : integer;				-- Vertical pixel coordinate
61
+	
62
+	signal DataX : signed (15 downto 0) := signed(DRX);
63
+	signal DataY : signed (15 downto 0) := signed(DRY);
64
+	signal Color : unsigned (15 downto 0) := unsigned((abs(DataX) + abs(DataY)) / 2);
65
+
66
+begin
67
+	process(Clk, Reset)
68
+		variable h_count : integer range 0 to h_period - 1 := 0;  -- Horizontal counter (counts the columns)
69
+		variable v_count : integer range 0 to v_period - 1 := 0;  -- Vertical counter (counts the rows)
70
+		
71
+	begin
72
+		if rising_edge(Clk) then
73
+			if(Reset = '1') then			-- Reset asserted
74
+				h_count := 0;				-- Reset horizontal counter
75
+				v_count := 0;				-- Reset vertical counter
76
+				H_SYNC <= not h_pol;		-- Deassert horizontal sync
77
+				V_SYNC <= not v_pol;		-- Deassert vertical sync
78
+				disp_ena <= '0';			-- Disable display
79
+				column <= 0;				-- Reset column pixel coordinate
80
+				row <= 0;					-- Reset row pixel coordinate
81
+			end if;
82
+			
83
+			-- Counters
84
+			if(h_count < h_period - 1) then
85
+				-- Horizontal counter (pixels)
86
+				h_count := h_count + 1;
87
+			else
88
+				h_count := 0;
89
+				if(v_count < v_period - 1) then
90
+					-- Veritcal counter (rows)
91
+					v_count := v_count + 1;
92
+				else
93
+					v_count := 0;
94
+				end if;
95
+			end if;
96
+
97
+			-- Horizontal sync signal
98
+			if(h_count < h_pixels + h_fp or h_count >= h_pixels + h_fp + h_pulse) then
99
+				H_SYNC <= not h_pol;		-- Deassert horiztonal sync pulse
100
+			else
101
+				H_SYNC <= h_pol;			-- Assert horiztonal sync pulse
102
+			end if;
103
+			
104
+			-- Vertical sync signal
105
+			if(v_count < v_pixels + v_fp or v_count >= v_pixels + v_fp + v_pulse) then
106
+				V_SYNC <= not v_pol;		-- Deassert vertical sync pulse
107
+			else
108
+				V_SYNC <= v_pol;			-- Assert vertical sync pulse
109
+			end if;
110
+			
111
+			-- Set pixel coordinates
112
+			if(h_count < h_pixels) then  	-- Horiztonal display time
113
+				column <= h_count;			-- Set horiztonal pixel coordinate
114
+			end if;
115
+			if(v_count < v_pixels) then	-- Vertical display time
116
+				row <= v_count;				-- Set vertical pixel coordinate
117
+			end if;
118
+
119
+			-- Set display enable signal
120
+			if(h_count < h_pixels and v_count < v_pixels) then
121
+				-- Display time
122
+				disp_ena <= '1';
123
+			else
124
+				-- Blanking time
125
+				disp_ena <= '0';
126
+			end if;
127
+		end if;
128
+	end process;
129
+
130
+	process(disp_ena, row, column, DataX, DataY, Color)
131
+	begin
132
+		if(disp_ena = '1') then
133
+			-- Display time
134
+			if(row > 295 - shift_right(DataX, 3) and column > 395 - shift_right(DataY, 3) and row < 305 - shift_right(DataX, 3) and column < 405 - shift_right(DataY, 3)) then
135
+				-- Northern marker (red)
136
+				V_R <= (others => '1');
137
+				V_G  <= STD_LOGIC_VECTOR(Color(10 downto 5));
138
+				V_B <= (others => '0');
139
+			elsif(row > 295 + shift_right(DataX, 3) and column > 395 + shift_right(DataY, 3) and row < 305 + shift_right(DataX, 3) and column < 405 + shift_right(DataY, 3)) then
140
+				-- Southern marker (blue)
141
+				V_R <= (others => '0');
142
+				V_G  <= STD_LOGIC_VECTOR(Color(10 downto 5));
143
+				V_B <= (others => '1');
144
+			elsif(row = 300 or column = 400) then
145
+				-- Axes (yellow)
146
+				V_R <= (others => '1');
147
+				V_G  <= (others => '1');
148
+				V_B <= (others => '0');
149
+			else
150
+				-- Background (black)
151
+				V_R <= (others => '0');
152
+				V_G  <= (others => '0');
153
+				V_B <= (others => '0');
154
+			end if;
155
+		else
156
+			-- Blanking time
157
+			V_R <= (others => '0');
158
+			V_G <= (others => '0');
159
+			V_B <= (others => '0');
160
+		end if;
161
+	end process;
162
+end Behavioral;
163
+

+ 7
- 0
ucisw2_magnetometr/magneto_i2c.jhd Voir le fichier

@@ -0,0 +1,7 @@
1
+MODULE magneto_i2c
2
+	SUBMODULE MagnetoHMC5883LCtrl
3
+		INSTANCE MagnetoCtrl
4
+	SUBMODULE Display4x7S
5
+		INSTANCE ZAxisDisp
6
+	SUBMODULE VGACompass
7
+		INSTANCE CompassDisp

+ 268
- 0
ucisw2_magnetometr/magneto_i2c.sch Voir le fichier

@@ -0,0 +1,268 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<drawing version="7">
3
+    <attr value="spartan6" name="DeviceFamilyName">
4
+        <trait delete="all:0" />
5
+        <trait editname="all:0" />
6
+        <trait edittrait="all:0" />
7
+    </attr>
8
+    <netlist>
9
+        <signal name="CLK" />
10
+        <signal name="Reset" />
11
+        <signal name="DRDY" />
12
+        <signal name="Rate(2:0)" />
13
+        <signal name="DRLED" />
14
+        <signal name="DS(7:0)" />
15
+        <signal name="DS_EN(3:0)" />
16
+        <signal name="XLXN_278(15:0)" />
17
+        <signal name="XLXN_264" />
18
+        <signal name="H_SYNC" />
19
+        <signal name="V_SYNC" />
20
+        <signal name="V_R(4:0)" />
21
+        <signal name="V_G(5:0)" />
22
+        <signal name="V_B(4:0)" />
23
+        <signal name="SCL" />
24
+        <signal name="SDA" />
25
+        <signal name="NACK" />
26
+        <signal name="XLXN_94(2:0)" />
27
+        <signal name="XLXN_110(15:0)" />
28
+        <signal name="XLXN_111(15:0)" />
29
+        <port polarity="Input" name="CLK" />
30
+        <port polarity="Input" name="Reset" />
31
+        <port polarity="Input" name="DRDY" />
32
+        <port polarity="Input" name="Rate(2:0)" />
33
+        <port polarity="Output" name="DRLED" />
34
+        <port polarity="Output" name="DS(7:0)" />
35
+        <port polarity="Output" name="DS_EN(3:0)" />
36
+        <port polarity="Output" name="H_SYNC" />
37
+        <port polarity="Output" name="V_SYNC" />
38
+        <port polarity="Output" name="V_R(4:0)" />
39
+        <port polarity="Output" name="V_G(5:0)" />
40
+        <port polarity="Output" name="V_B(4:0)" />
41
+        <port polarity="BiDirectional" name="SCL" />
42
+        <port polarity="BiDirectional" name="SDA" />
43
+        <port polarity="Output" name="NACK" />
44
+        <blockdef name="inv">
45
+            <timestamp>2000-1-1T10:10:10</timestamp>
46
+            <line x2="64" y1="-32" y2="-32" x1="0" />
47
+            <line x2="160" y1="-32" y2="-32" x1="224" />
48
+            <line x2="128" y1="-64" y2="-32" x1="64" />
49
+            <line x2="64" y1="-32" y2="0" x1="128" />
50
+            <line x2="64" y1="0" y2="-64" x1="64" />
51
+            <circle r="16" cx="144" cy="-32" />
52
+        </blockdef>
53
+        <blockdef name="MagnetoHMC5883LCtrl">
54
+            <timestamp>2018-5-25T11:43:31</timestamp>
55
+            <rect width="304" x="64" y="-512" height="512" />
56
+            <rect width="64" x="0" y="-492" height="24" />
57
+            <line x2="0" y1="-480" y2="-480" x1="64" />
58
+            <line x2="0" y1="-336" y2="-336" x1="64" />
59
+            <line x2="0" y1="-192" y2="-192" x1="64" />
60
+            <line x2="0" y1="-48" y2="-48" x1="64" />
61
+            <line x2="432" y1="-480" y2="-480" x1="368" />
62
+            <rect width="64" x="368" y="-428" height="24" />
63
+            <line x2="432" y1="-416" y2="-416" x1="368" />
64
+            <rect width="64" x="368" y="-364" height="24" />
65
+            <line x2="432" y1="-352" y2="-352" x1="368" />
66
+            <rect width="64" x="368" y="-300" height="24" />
67
+            <line x2="432" y1="-288" y2="-288" x1="368" />
68
+            <rect width="64" x="368" y="-236" height="24" />
69
+            <line x2="432" y1="-224" y2="-224" x1="368" />
70
+            <line x2="432" y1="-160" y2="-160" x1="368" />
71
+            <line x2="432" y1="-96" y2="-96" x1="368" />
72
+            <line x2="432" y1="-32" y2="-32" x1="368" />
73
+        </blockdef>
74
+        <blockdef name="buf">
75
+            <timestamp>2000-1-1T10:10:10</timestamp>
76
+            <line x2="64" y1="-32" y2="-32" x1="0" />
77
+            <line x2="128" y1="-32" y2="-32" x1="224" />
78
+            <line x2="128" y1="0" y2="-32" x1="64" />
79
+            <line x2="64" y1="-32" y2="-64" x1="128" />
80
+            <line x2="64" y1="-64" y2="0" x1="64" />
81
+        </blockdef>
82
+        <blockdef name="Display4x7S">
83
+            <timestamp>2018-5-25T12:38:38</timestamp>
84
+            <rect width="256" x="64" y="-256" height="256" />
85
+            <line x2="0" y1="-224" y2="-224" x1="64" />
86
+            <rect width="64" x="0" y="-172" height="24" />
87
+            <line x2="0" y1="-160" y2="-160" x1="64" />
88
+            <rect width="64" x="0" y="-108" height="24" />
89
+            <line x2="0" y1="-96" y2="-96" x1="64" />
90
+            <rect width="64" x="0" y="-44" height="24" />
91
+            <line x2="0" y1="-32" y2="-32" x1="64" />
92
+            <rect width="64" x="320" y="-236" height="24" />
93
+            <line x2="384" y1="-224" y2="-224" x1="320" />
94
+            <rect width="64" x="320" y="-44" height="24" />
95
+            <line x2="384" y1="-32" y2="-32" x1="320" />
96
+        </blockdef>
97
+        <blockdef name="VGACompass">
98
+            <timestamp>2018-5-28T23:28:4</timestamp>
99
+            <rect width="256" x="64" y="-320" height="320" />
100
+            <line x2="0" y1="-288" y2="-288" x1="64" />
101
+            <line x2="0" y1="-208" y2="-208" x1="64" />
102
+            <rect width="64" x="0" y="-140" height="24" />
103
+            <line x2="0" y1="-128" y2="-128" x1="64" />
104
+            <rect width="64" x="0" y="-60" height="24" />
105
+            <line x2="0" y1="-48" y2="-48" x1="64" />
106
+            <line x2="384" y1="-288" y2="-288" x1="320" />
107
+            <line x2="384" y1="-224" y2="-224" x1="320" />
108
+            <rect width="64" x="320" y="-172" height="24" />
109
+            <line x2="384" y1="-160" y2="-160" x1="320" />
110
+            <rect width="64" x="320" y="-108" height="24" />
111
+            <line x2="384" y1="-96" y2="-96" x1="320" />
112
+            <rect width="64" x="320" y="-44" height="24" />
113
+            <line x2="384" y1="-32" y2="-32" x1="320" />
114
+        </blockdef>
115
+        <block symbolname="inv" name="XLXI_20(2:0)">
116
+            <blockpin signalname="Rate(2:0)" name="I" />
117
+            <blockpin signalname="XLXN_94(2:0)" name="O" />
118
+        </block>
119
+        <block symbolname="buf" name="XLXI_19">
120
+            <blockpin signalname="DRDY" name="I" />
121
+            <blockpin signalname="DRLED" name="O" />
122
+        </block>
123
+        <block symbolname="Display4x7S" name="ZAxisDisp">
124
+            <blockpin signalname="CLK" name="Clk" />
125
+            <blockpin signalname="XLXN_278(15:0)" name="DI(15:0)" />
126
+            <blockpin name="DP(3:0)" />
127
+            <blockpin name="Blank(3:0)" />
128
+            <blockpin signalname="DS_EN(3:0)" name="DS_EN(3:0)" />
129
+            <blockpin signalname="DS(7:0)" name="DS(7:0)" />
130
+        </block>
131
+        <block symbolname="MagnetoHMC5883LCtrl" name="MagnetoCtrl">
132
+            <blockpin signalname="XLXN_94(2:0)" name="OutputRate(2:0)" />
133
+            <blockpin signalname="CLK" name="Clk" />
134
+            <blockpin signalname="XLXN_264" name="Reset" />
135
+            <blockpin signalname="DRDY" name="DRDY" />
136
+            <blockpin name="DR_New" />
137
+            <blockpin name="ID(23:0)" />
138
+            <blockpin signalname="XLXN_110(15:0)" name="DRX(15:0)" />
139
+            <blockpin signalname="XLXN_111(15:0)" name="DRY(15:0)" />
140
+            <blockpin signalname="XLXN_278(15:0)" name="DRZ(15:0)" />
141
+            <blockpin signalname="NACK" name="NACK" />
142
+            <blockpin signalname="SDA" name="SDA" />
143
+            <blockpin signalname="SCL" name="SCL" />
144
+        </block>
145
+        <block symbolname="inv" name="XLXI_5">
146
+            <blockpin signalname="Reset" name="I" />
147
+            <blockpin signalname="XLXN_264" name="O" />
148
+        </block>
149
+        <block symbolname="VGACompass" name="CompassDisp">
150
+            <blockpin signalname="XLXN_264" name="Reset" />
151
+            <blockpin signalname="CLK" name="Clk" />
152
+            <blockpin signalname="XLXN_110(15:0)" name="DRX(15:0)" />
153
+            <blockpin signalname="XLXN_111(15:0)" name="DRY(15:0)" />
154
+            <blockpin signalname="H_SYNC" name="H_SYNC" />
155
+            <blockpin signalname="V_SYNC" name="V_SYNC" />
156
+            <blockpin signalname="V_R(4:0)" name="V_R(4:0)" />
157
+            <blockpin signalname="V_G(5:0)" name="V_G(5:0)" />
158
+            <blockpin signalname="V_B(4:0)" name="V_B(4:0)" />
159
+        </block>
160
+    </netlist>
161
+    <sheet sheetnum="1" width="3520" height="2720">
162
+        <branch name="Reset">
163
+            <wire x2="208" y1="432" y2="432" x1="176" />
164
+        </branch>
165
+        <branch name="DRDY">
166
+            <wire x2="400" y1="576" y2="576" x1="176" />
167
+            <wire x2="480" y1="576" y2="576" x1="400" />
168
+            <wire x2="400" y1="576" y2="1040" x1="400" />
169
+            <wire x2="1312" y1="1040" y2="1040" x1="400" />
170
+        </branch>
171
+        <instance x="208" y="176" name="XLXI_20(2:0)" orien="R0" />
172
+        <branch name="Rate(2:0)">
173
+            <wire x2="208" y1="144" y2="144" x1="176" />
174
+        </branch>
175
+        <iomarker fontsize="28" x="176" y="144" name="Rate(2:0)" orien="R180" />
176
+        <iomarker fontsize="28" x="176" y="288" name="CLK" orien="R180" />
177
+        <iomarker fontsize="28" x="176" y="432" name="Reset" orien="R180" />
178
+        <iomarker fontsize="28" x="176" y="576" name="DRDY" orien="R180" />
179
+        <branch name="DRLED">
180
+            <wire x2="1648" y1="1040" y2="1040" x1="1536" />
181
+        </branch>
182
+        <iomarker fontsize="28" x="1648" y="1040" name="DRLED" orien="R0" />
183
+        <iomarker fontsize="28" x="1648" y="928" name="DS(7:0)" orien="R0" />
184
+        <iomarker fontsize="28" x="1648" y="736" name="DS_EN(3:0)" orien="R0" />
185
+        <instance x="1232" y="960" name="ZAxisDisp" orien="R0">
186
+        </instance>
187
+        <iomarker fontsize="28" x="1648" y="128" name="H_SYNC" orien="R0" />
188
+        <iomarker fontsize="28" x="1648" y="192" name="V_SYNC" orien="R0" />
189
+        <iomarker fontsize="28" x="1648" y="256" name="V_R(4:0)" orien="R0" />
190
+        <iomarker fontsize="28" x="1648" y="320" name="V_G(5:0)" orien="R0" />
191
+        <iomarker fontsize="28" x="1648" y="384" name="V_B(4:0)" orien="R0" />
192
+        <iomarker fontsize="28" x="1648" y="592" name="SCL" orien="R0" />
193
+        <iomarker fontsize="28" x="1648" y="528" name="SDA" orien="R0" />
194
+        <iomarker fontsize="28" x="1648" y="464" name="NACK" orien="R0" />
195
+        <instance x="480" y="624" name="MagnetoCtrl" orien="R0">
196
+        </instance>
197
+        <branch name="DS(7:0)">
198
+            <wire x2="1648" y1="928" y2="928" x1="1616" />
199
+        </branch>
200
+        <branch name="DS_EN(3:0)">
201
+            <wire x2="1648" y1="736" y2="736" x1="1616" />
202
+        </branch>
203
+        <branch name="XLXN_278(15:0)">
204
+            <wire x2="960" y1="400" y2="400" x1="912" />
205
+            <wire x2="960" y1="400" y2="800" x1="960" />
206
+            <wire x2="1232" y1="800" y2="800" x1="960" />
207
+        </branch>
208
+        <branch name="XLXN_264">
209
+            <wire x2="464" y1="432" y2="432" x1="432" />
210
+            <wire x2="480" y1="432" y2="432" x1="464" />
211
+            <wire x2="464" y1="432" y2="656" x1="464" />
212
+            <wire x2="992" y1="656" y2="656" x1="464" />
213
+            <wire x2="1232" y1="128" y2="128" x1="992" />
214
+            <wire x2="992" y1="128" y2="656" x1="992" />
215
+        </branch>
216
+        <branch name="H_SYNC">
217
+            <wire x2="1648" y1="128" y2="128" x1="1616" />
218
+        </branch>
219
+        <branch name="V_SYNC">
220
+            <wire x2="1648" y1="192" y2="192" x1="1616" />
221
+        </branch>
222
+        <branch name="V_R(4:0)">
223
+            <wire x2="1648" y1="256" y2="256" x1="1616" />
224
+        </branch>
225
+        <branch name="V_G(5:0)">
226
+            <wire x2="1648" y1="320" y2="320" x1="1616" />
227
+        </branch>
228
+        <branch name="V_B(4:0)">
229
+            <wire x2="1648" y1="384" y2="384" x1="1616" />
230
+        </branch>
231
+        <branch name="SCL">
232
+            <wire x2="1648" y1="592" y2="592" x1="912" />
233
+        </branch>
234
+        <branch name="SDA">
235
+            <wire x2="1648" y1="528" y2="528" x1="912" />
236
+        </branch>
237
+        <branch name="NACK">
238
+            <wire x2="1648" y1="464" y2="464" x1="912" />
239
+        </branch>
240
+        <branch name="XLXN_94(2:0)">
241
+            <wire x2="480" y1="144" y2="144" x1="432" />
242
+        </branch>
243
+        <branch name="XLXN_110(15:0)">
244
+            <wire x2="1136" y1="272" y2="272" x1="912" />
245
+            <wire x2="1136" y1="272" y2="288" x1="1136" />
246
+            <wire x2="1232" y1="288" y2="288" x1="1136" />
247
+        </branch>
248
+        <branch name="XLXN_111(15:0)">
249
+            <wire x2="1056" y1="336" y2="336" x1="912" />
250
+            <wire x2="1056" y1="336" y2="368" x1="1056" />
251
+            <wire x2="1232" y1="368" y2="368" x1="1056" />
252
+        </branch>
253
+        <branch name="CLK">
254
+            <wire x2="432" y1="288" y2="288" x1="176" />
255
+            <wire x2="432" y1="288" y2="688" x1="432" />
256
+            <wire x2="1024" y1="688" y2="688" x1="432" />
257
+            <wire x2="1024" y1="688" y2="736" x1="1024" />
258
+            <wire x2="1232" y1="736" y2="736" x1="1024" />
259
+            <wire x2="480" y1="288" y2="288" x1="432" />
260
+            <wire x2="1024" y1="208" y2="688" x1="1024" />
261
+            <wire x2="1232" y1="208" y2="208" x1="1024" />
262
+        </branch>
263
+        <instance x="208" y="464" name="XLXI_5" orien="R0" />
264
+        <instance x="1312" y="1072" name="XLXI_19" orien="R0" />
265
+        <instance x="1232" y="416" name="CompassDisp" orien="R0">
266
+        </instance>
267
+    </sheet>
268
+</drawing>

+ 53
- 0
ucisw2_magnetometr/magneto_i2c.sym Voir le fichier

@@ -0,0 +1,53 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<symbol version="7" name="magneto_i2c">
3
+    <symboltype>BLOCK</symboltype>
4
+    <timestamp>2018-5-26T13:14:4</timestamp>
5
+    <pin polarity="Input" x="0" y="-608" name="Reset" />
6
+    <pin polarity="Input" x="0" y="-320" name="CLK" />
7
+    <pin polarity="Input" x="0" y="-32" name="DRDY" />
8
+    <pin polarity="Output" x="384" y="-608" name="NACK" />
9
+    <pin polarity="Output" x="384" y="-544" name="DS_EN(3:0)" />
10
+    <pin polarity="Output" x="384" y="-480" name="DS(7:0)" />
11
+    <pin polarity="Output" x="384" y="-416" name="HSYNC" />
12
+    <pin polarity="Output" x="384" y="-352" name="VSYNC" />
13
+    <pin polarity="Output" x="384" y="-288" name="VR(4:0)" />
14
+    <pin polarity="Output" x="384" y="-224" name="VG(5:0)" />
15
+    <pin polarity="Output" x="384" y="-160" name="VB(4:0)" />
16
+    <pin polarity="BiDirectional" x="384" y="-96" name="SCL" />
17
+    <pin polarity="BiDirectional" x="384" y="-32" name="SDA" />
18
+    <graph>
19
+        <rect width="256" x="64" y="-640" height="640" />
20
+        <attrtext style="alignment:BCENTER;fontsize:56;fontname:Arial" attrname="SymbolName" x="192" y="-648" type="symbol" />
21
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-608" type="pin Reset" />
22
+        <line x2="0" y1="-608" y2="-608" x1="64" />
23
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-320" type="pin CLK" />
24
+        <line x2="0" y1="-320" y2="-320" x1="64" />
25
+        <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-32" type="pin DRDY" />
26
+        <line x2="0" y1="-32" y2="-32" x1="64" />
27
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="312" y="-608" type="pin NACK" />
28
+        <line x2="384" y1="-608" y2="-608" x1="320" />
29
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="312" y="-544" type="pin DS_EN(3:0)" />
30
+        <rect width="64" x="320" y="-556" height="24" />
31
+        <line x2="384" y1="-544" y2="-544" x1="320" />
32
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="312" y="-480" type="pin DS(7:0)" />
33
+        <rect width="64" x="320" y="-492" height="24" />
34
+        <line x2="384" y1="-480" y2="-480" x1="320" />
35
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="312" y="-416" type="pin HSYNC" />
36
+        <line x2="384" y1="-416" y2="-416" x1="320" />
37
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="312" y="-352" type="pin VSYNC" />
38
+        <line x2="384" y1="-352" y2="-352" x1="320" />
39
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="312" y="-288" type="pin VR(4:0)" />
40
+        <rect width="64" x="320" y="-300" height="24" />
41
+        <line x2="384" y1="-288" y2="-288" x1="320" />
42
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="312" y="-224" type="pin VG(5:0)" />
43
+        <rect width="64" x="320" y="-236" height="24" />
44
+        <line x2="384" y1="-224" y2="-224" x1="320" />
45
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="312" y="-160" type="pin VB(4:0)" />
46
+        <rect width="64" x="320" y="-172" height="24" />
47
+        <line x2="384" y1="-160" y2="-160" x1="320" />
48
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="312" y="-96" type="pin SCL" />
49
+        <line x2="384" y1="-96" y2="-96" x1="320" />
50
+        <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="312" y="-32" type="pin SDA" />
51
+        <line x2="384" y1="-32" y2="-32" x1="320" />
52
+    </graph>
53
+</symbol>

+ 274
- 0
ucisw2_magnetometr/magneto_i2c.vhf Voir le fichier

@@ -0,0 +1,274 @@
1
+--------------------------------------------------------------------------------
2
+-- Copyright (c) 1995-2013 Xilinx, Inc.  All rights reserved.
3
+--------------------------------------------------------------------------------
4
+--   ____  ____ 
5
+--  /   /\/   / 
6
+-- /___/  \  /    Vendor: Xilinx 
7
+-- \   \   \/     Version : 14.7
8
+--  \   \         Application : sch2hdl
9
+--  /   /         Filename : magneto_i2c.vhf
10
+-- /___/   /\     Timestamp : 05/29/2018 01:34:17
11
+-- \   \  /  \ 
12
+--  \___\/\___\ 
13
+--
14
+--Command: sch2hdl -intstyle ise -family spartan6 -flat -suppress -vhdl D:/XilinxPrj/ucisw2_magnetometr/magneto_i2c.vhf -w D:/XilinxPrj/ucisw2_magnetometr/magneto_i2c.sch
15
+--Design Name: magneto_i2c
16
+--Device: spartan6
17
+--Purpose:
18
+--    This vhdl netlist is translated from an ECS schematic. It can be 
19
+--    synthesized and simulated, but it should not be modified. 
20
+--
21
+
22
+library ieee;
23
+use ieee.std_logic_1164.ALL;
24
+use ieee.numeric_std.ALL;
25
+library UNISIM;
26
+use UNISIM.Vcomponents.ALL;
27
+
28
+entity MagnetoHMC5883LCtrl_MUSER_magneto_i2c is
29
+   port ( Clk        : in    std_logic; 
30
+          DRDY       : in    std_logic; 
31
+          OutputRate : in    std_logic_vector (2 downto 0); 
32
+          Reset      : in    std_logic; 
33
+          DRX        : out   std_logic_vector (15 downto 0); 
34
+          DRY        : out   std_logic_vector (15 downto 0); 
35
+          DRZ        : out   std_logic_vector (15 downto 0); 
36
+          DR_New     : out   std_logic; 
37
+          ID         : out   std_logic_vector (23 downto 0); 
38
+          NACK       : out   std_logic; 
39
+          SCL        : inout std_logic; 
40
+          SDA        : inout std_logic);
41
+end MagnetoHMC5883LCtrl_MUSER_magneto_i2c;
42
+
43
+architecture BEHAVIORAL of MagnetoHMC5883LCtrl_MUSER_magneto_i2c is
44
+   signal XLXN_4     : std_logic;
45
+   signal XLXN_5     : std_logic;
46
+   signal XLXN_6     : std_logic;
47
+   signal XLXN_27    : std_logic_vector (7 downto 0);
48
+   signal XLXN_28    : std_logic_vector (7 downto 0);
49
+   signal XLXN_29    : std_logic_vector (3 downto 0);
50
+   signal XLXN_52    : std_logic;
51
+   signal XLXN_54    : std_logic;
52
+   signal XLXN_55    : std_logic;
53
+   signal XLXN_57    : std_logic_vector (7 downto 0);
54
+   component I2C_Master
55
+      port ( Go         : in    std_logic; 
56
+             Address    : in    std_logic_vector (7 downto 0); 
57
+             ReadCnt    : in    std_logic_vector (3 downto 0); 
58
+             SDA        : inout std_logic; 
59
+             SCL        : inout std_logic; 
60
+             FIFO_Pop   : in    std_logic; 
61
+             FIFO_Push  : in    std_logic; 
62
+             FIFO_DI    : in    std_logic_vector (7 downto 0); 
63
+             FIFO_Empty : out   std_logic; 
64
+             FIFO_Full  : out   std_logic; 
65
+             FIFO_DO    : out   std_logic_vector (7 downto 0); 
66
+             Reset      : in    std_logic; 
67
+             Clk        : in    std_logic; 
68
+             Busy       : out   std_logic; 
69
+             NACK       : out   std_logic);
70
+   end component;
71
+   
72
+   component Magneto_Drv
73
+      port ( I2C_FIFO_Empty : in    std_logic; 
74
+             I2C_FIFO_Full  : in    std_logic; 
75
+             I2C_Busy       : in    std_logic; 
76
+             DRDY           : in    std_logic; 
77
+             Reset          : in    std_logic; 
78
+             Clk            : in    std_logic; 
79
+             I2C_FIFO_DO    : in    std_logic_vector (7 downto 0); 
80
+             OutputRate     : in    std_logic_vector (2 downto 0); 
81
+             I2C_Go         : out   std_logic; 
82
+             I2C_FIFO_Push  : out   std_logic; 
83
+             I2C_FIFO_Pop   : out   std_logic; 
84
+             DR_New         : out   std_logic; 
85
+             I2C_FIFO_DI    : out   std_logic_vector (7 downto 0); 
86
+             I2C_Addr       : out   std_logic_vector (7 downto 0); 
87
+             I2C_ReadCnt    : out   std_logic_vector (3 downto 0); 
88
+             ID             : out   std_logic_vector (23 downto 0); 
89
+             DRX            : out   std_logic_vector (15 downto 0); 
90
+             DRY            : out   std_logic_vector (15 downto 0); 
91
+             DRZ            : out   std_logic_vector (15 downto 0));
92
+   end component;
93
+   
94
+begin
95
+   I2CCtrl : I2C_Master
96
+      port map (Address(7 downto 0)=>XLXN_28(7 downto 0),
97
+                Clk=>Clk,
98
+                FIFO_DI(7 downto 0)=>XLXN_27(7 downto 0),
99
+                FIFO_Pop=>XLXN_6,
100
+                FIFO_Push=>XLXN_5,
101
+                Go=>XLXN_4,
102
+                ReadCnt(3 downto 0)=>XLXN_29(3 downto 0),
103
+                Reset=>Reset,
104
+                Busy=>XLXN_55,
105
+                FIFO_DO(7 downto 0)=>XLXN_57(7 downto 0),
106
+                FIFO_Empty=>XLXN_52,
107
+                FIFO_Full=>XLXN_54,
108
+                NACK=>NACK,
109
+                SCL=>SCL,
110
+                SDA=>SDA);
111
+   
112
+   MagnetoInterface : Magneto_Drv
113
+      port map (Clk=>Clk,
114
+                DRDY=>DRDY,
115
+                I2C_Busy=>XLXN_55,
116
+                I2C_FIFO_DO(7 downto 0)=>XLXN_57(7 downto 0),
117
+                I2C_FIFO_Empty=>XLXN_52,
118
+                I2C_FIFO_Full=>XLXN_54,
119
+                OutputRate(2 downto 0)=>OutputRate(2 downto 0),
120
+                Reset=>Reset,
121
+                DRX(15 downto 0)=>DRX(15 downto 0),
122
+                DRY(15 downto 0)=>DRY(15 downto 0),
123
+                DRZ(15 downto 0)=>DRZ(15 downto 0),
124
+                DR_New=>DR_New,
125
+                ID(23 downto 0)=>ID(23 downto 0),
126
+                I2C_Addr(7 downto 0)=>XLXN_28(7 downto 0),
127
+                I2C_FIFO_DI(7 downto 0)=>XLXN_27(7 downto 0),
128
+                I2C_FIFO_Pop=>XLXN_6,
129
+                I2C_FIFO_Push=>XLXN_5,
130
+                I2C_Go=>XLXN_4,
131
+                I2C_ReadCnt(3 downto 0)=>XLXN_29(3 downto 0));
132
+   
133
+end BEHAVIORAL;
134
+
135
+
136
+
137
+library ieee;
138
+use ieee.std_logic_1164.ALL;
139
+use ieee.numeric_std.ALL;
140
+library UNISIM;
141
+use UNISIM.Vcomponents.ALL;
142
+
143
+entity magneto_i2c is
144
+   port ( CLK    : in    std_logic; 
145
+          DRDY   : in    std_logic; 
146
+          Rate   : in    std_logic_vector (2 downto 0); 
147
+          Reset  : in    std_logic; 
148
+          DRLED  : out   std_logic; 
149
+          DS     : out   std_logic_vector (7 downto 0); 
150
+          DS_EN  : out   std_logic_vector (3 downto 0); 
151
+          H_SYNC : out   std_logic; 
152
+          NACK   : out   std_logic; 
153
+          V_B    : out   std_logic_vector (4 downto 0); 
154
+          V_G    : out   std_logic_vector (5 downto 0); 
155
+          V_R    : out   std_logic_vector (4 downto 0); 
156
+          V_SYNC : out   std_logic; 
157
+          SCL    : inout std_logic; 
158
+          SDA    : inout std_logic);
159
+end magneto_i2c;
160
+
161
+architecture BEHAVIORAL of magneto_i2c is
162
+   attribute BOX_TYPE   : string ;
163
+   signal XLXN_94                    : std_logic_vector (2 downto 0);
164
+   signal XLXN_110                   : std_logic_vector (15 downto 0);
165
+   signal XLXN_111                   : std_logic_vector (15 downto 0);
166
+   signal XLXN_264                   : std_logic;
167
+   signal XLXN_278                   : std_logic_vector (15 downto 0);
168
+   signal ZAxisDisp_Blank_openSignal : std_logic_vector (3 downto 0);
169
+   signal ZAxisDisp_DP_openSignal    : std_logic_vector (3 downto 0);
170
+   component VGACompass
171
+      port ( Reset  : in    std_logic; 
172
+             Clk    : in    std_logic; 
173
+             DRX    : in    std_logic_vector (15 downto 0); 
174
+             DRY    : in    std_logic_vector (15 downto 0); 
175
+             H_SYNC : out   std_logic; 
176
+             V_SYNC : out   std_logic; 
177
+             V_R    : out   std_logic_vector (4 downto 0); 
178
+             V_G    : out   std_logic_vector (5 downto 0); 
179
+             V_B    : out   std_logic_vector (4 downto 0));
180
+   end component;
181
+   
182
+   component MagnetoHMC5883LCtrl_MUSER_magneto_i2c
183
+      port ( OutputRate : in    std_logic_vector (2 downto 0); 
184
+             Clk        : in    std_logic; 
185
+             Reset      : in    std_logic; 
186
+             DRDY       : in    std_logic; 
187
+             DR_New     : out   std_logic; 
188
+             ID         : out   std_logic_vector (23 downto 0); 
189
+             DRX        : out   std_logic_vector (15 downto 0); 
190
+             DRY        : out   std_logic_vector (15 downto 0); 
191
+             DRZ        : out   std_logic_vector (15 downto 0); 
192
+             NACK       : out   std_logic; 
193
+             SDA        : inout std_logic; 
194
+             SCL        : inout std_logic);
195
+   end component;
196
+   
197
+   component INV
198
+      port ( I : in    std_logic; 
199
+             O : out   std_logic);
200
+   end component;
201
+   attribute BOX_TYPE of INV : component is "BLACK_BOX";
202
+   
203
+   component BUF
204
+      port ( I : in    std_logic; 
205
+             O : out   std_logic);
206
+   end component;
207
+   attribute BOX_TYPE of BUF : component is "BLACK_BOX";
208
+   
209
+   component Display4x7S
210
+      port ( Clk   : in    std_logic; 
211
+             DI    : in    std_logic_vector (15 downto 0); 
212
+             DP    : in    std_logic_vector (3 downto 0); 
213
+             Blank : in    std_logic_vector (3 downto 0); 
214
+             DS_EN : out   std_logic_vector (3 downto 0); 
215
+             DS    : out   std_logic_vector (7 downto 0));
216
+   end component;
217
+   
218
+begin
219
+   CompassDisp : VGACompass
220
+      port map (Clk=>CLK,
221
+                DRX(15 downto 0)=>XLXN_110(15 downto 0),
222
+                DRY(15 downto 0)=>XLXN_111(15 downto 0),
223
+                Reset=>XLXN_264,
224
+                H_SYNC=>H_SYNC,
225
+                V_B(4 downto 0)=>V_B(4 downto 0),
226
+                V_G(5 downto 0)=>V_G(5 downto 0),
227
+                V_R(4 downto 0)=>V_R(4 downto 0),
228
+                V_SYNC=>V_SYNC);
229
+   
230
+   MagnetoCtrl : MagnetoHMC5883LCtrl_MUSER_magneto_i2c
231
+      port map (Clk=>CLK,
232
+                DRDY=>DRDY,
233
+                OutputRate(2 downto 0)=>XLXN_94(2 downto 0),
234
+                Reset=>XLXN_264,
235
+                DRX(15 downto 0)=>XLXN_110(15 downto 0),
236
+                DRY(15 downto 0)=>XLXN_111(15 downto 0),
237
+                DRZ(15 downto 0)=>XLXN_278(15 downto 0),
238
+                DR_New=>open,
239
+                ID=>open,
240
+                NACK=>NACK,
241
+                SCL=>SCL,
242
+                SDA=>SDA);
243
+   
244
+   XLXI_5 : INV
245
+      port map (I=>Reset,
246
+                O=>XLXN_264);
247
+   
248
+   XLXI_19 : BUF
249
+      port map (I=>DRDY,
250
+                O=>DRLED);
251
+   
252
+   XLXI_20_0 : INV
253
+      port map (I=>Rate(0),
254
+                O=>XLXN_94(0));
255
+   
256
+   XLXI_20_1 : INV
257
+      port map (I=>Rate(1),
258
+                O=>XLXN_94(1));
259
+   
260
+   XLXI_20_2 : INV
261
+      port map (I=>Rate(2),
262
+                O=>XLXN_94(2));
263
+   
264
+   ZAxisDisp : Display4x7S
265
+      port map (Blank(3 downto 0)=>ZAxisDisp_Blank_openSignal(3 downto 0),
266
+                Clk=>CLK,
267
+                DI(15 downto 0)=>XLXN_278(15 downto 0),
268
+                DP(3 downto 0)=>ZAxisDisp_DP_openSignal(3 downto 0),
269
+                DS(7 downto 0)=>DS(7 downto 0),
270
+                DS_EN(3 downto 0)=>DS_EN(3 downto 0));
271
+   
272
+end BEHAVIORAL;
273
+
274
+

BIN
ucisw2_magnetometr/magneto_impact.ipf Voir le fichier


+ 1
- 0
ucisw2_magnetometr/sch2HdlBatchFile Voir le fichier

@@ -0,0 +1 @@
1
+sch2hdl,-intstyle,ise,-family,spartan6,-flat,-suppress,-vhdl,D:/XilinxPrj/ucisw2_magnetometr/magneto_i2c.vhf,-w,D:/XilinxPrj/ucisw2_magnetometr/magneto_i2c.sch

+ 389
- 0
ucisw2_magnetometr/ucisw2_magnetometr.xise Voir le fichier

@@ -0,0 +1,389 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
2
+<project xmlns="http://www.xilinx.com/XMLSchema" xmlns:xil_pn="http://www.xilinx.com/XMLSchema">
3
+
4
+  <header>
5
+    <!-- ISE source project file created by Project Navigator.             -->
6
+    <!--                                                                   -->
7
+    <!-- This file contains project source information including a list of -->
8
+    <!-- project source files, project and process properties.  This file, -->
9
+    <!-- along with the project source files, is sufficient to open and    -->
10
+    <!-- implement in ISE Project Navigator.                               -->
11
+    <!--                                                                   -->
12
+    <!-- Copyright (c) 1995-2013 Xilinx, Inc.  All rights reserved. -->
13
+  </header>
14
+
15
+  <version xil_pn:ise_version="14.7" xil_pn:schema_version="2"/>
16
+
17
+  <files>
18
+    <file xil_pn:name="magneto_i2c.sch" xil_pn:type="FILE_SCHEMATIC">
19
+      <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="1"/>
20
+      <association xil_pn:name="Implementation" xil_pn:seqID="6"/>
21
+    </file>
22
+    <file xil_pn:name="ESPIER_III.ucf" xil_pn:type="FILE_UCF">
23
+      <association xil_pn:name="Implementation" xil_pn:seqID="0"/>
24
+    </file>
25
+    <file xil_pn:name="I2C_Master.vhd" xil_pn:type="FILE_VHDL">
26
+      <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="4"/>
27
+      <association xil_pn:name="Implementation" xil_pn:seqID="2"/>
28
+    </file>
29
+    <file xil_pn:name="Magneto_Drv.vhd" xil_pn:type="FILE_VHDL">
30
+      <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="5"/>
31
+      <association xil_pn:name="Implementation" xil_pn:seqID="1"/>
32
+    </file>
33
+    <file xil_pn:name="MagnetoHMC5883LCtrl.sch" xil_pn:type="FILE_SCHEMATIC">
34
+      <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="65"/>
35
+      <association xil_pn:name="Implementation" xil_pn:seqID="4"/>
36
+    </file>
37
+    <file xil_pn:name="Display4x7S.vhd" xil_pn:type="FILE_VHDL">
38
+      <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="67"/>
39
+      <association xil_pn:name="Implementation" xil_pn:seqID="5"/>
40
+    </file>
41
+    <file xil_pn:name="VGACompass.vhd" xil_pn:type="FILE_VHDL">
42
+      <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="78"/>
43
+      <association xil_pn:name="Implementation" xil_pn:seqID="3"/>
44
+    </file>
45
+    <file xil_pn:name="Magneto_J3.ucf" xil_pn:type="FILE_UCF">
46
+      <association xil_pn:name="Implementation" xil_pn:seqID="0"/>
47
+    </file>
48
+  </files>
49
+
50
+  <properties>
51
+    <property xil_pn:name="AES Initial Vector spartan6" xil_pn:value="" xil_pn:valueState="default"/>
52
+    <property xil_pn:name="AES Key (Hex String) spartan6" xil_pn:value="" xil_pn:valueState="default"/>
53
+    <property xil_pn:name="Add I/O Buffers" xil_pn:value="true" xil_pn:valueState="default"/>
54
+    <property xil_pn:name="Allow Logic Optimization Across Hierarchy" xil_pn:value="false" xil_pn:valueState="default"/>
55
+    <property xil_pn:name="Allow SelectMAP Pins to Persist" xil_pn:value="false" xil_pn:valueState="default"/>
56
+    <property xil_pn:name="Allow Unexpanded Blocks" xil_pn:value="false" xil_pn:valueState="default"/>
57
+    <property xil_pn:name="Allow Unmatched LOC Constraints" xil_pn:value="false" xil_pn:valueState="default"/>
58
+    <property xil_pn:name="Allow Unmatched Timing Group Constraints" xil_pn:value="false" xil_pn:valueState="default"/>
59
+    <property xil_pn:name="Analysis Effort Level" xil_pn:value="Standard" xil_pn:valueState="default"/>
60
+    <property xil_pn:name="Asynchronous To Synchronous" xil_pn:value="false" xil_pn:valueState="default"/>
61
+    <property xil_pn:name="Auto Implementation Compile Order" xil_pn:value="true" xil_pn:valueState="default"/>
62
+    <property xil_pn:name="Auto Implementation Top" xil_pn:value="true" xil_pn:valueState="default"/>
63
+    <property xil_pn:name="Automatic BRAM Packing" xil_pn:value="false" xil_pn:valueState="default"/>
64
+    <property xil_pn:name="Automatically Insert glbl Module in the Netlist" xil_pn:value="true" xil_pn:valueState="default"/>
65
+    <property xil_pn:name="Automatically Run Generate Target PROM/ACE File" xil_pn:value="false" xil_pn:valueState="default"/>
66
+    <property xil_pn:name="BRAM Utilization Ratio" xil_pn:value="100" xil_pn:valueState="default"/>
67
+    <property xil_pn:name="Bring Out Global Set/Reset Net as a Port" xil_pn:value="false" xil_pn:valueState="default"/>
68
+    <property xil_pn:name="Bring Out Global Tristate Net as a Port" xil_pn:value="false" xil_pn:valueState="default"/>
69
+    <property xil_pn:name="Bus Delimiter" xil_pn:value="&lt;>" xil_pn:valueState="default"/>
70
+    <property xil_pn:name="Case" xil_pn:value="Maintain" xil_pn:valueState="default"/>
71
+    <property xil_pn:name="Case Implementation Style" xil_pn:value="None" xil_pn:valueState="default"/>
72
+    <property xil_pn:name="Change Device Speed To" xil_pn:value="-3" xil_pn:valueState="default"/>
73
+    <property xil_pn:name="Change Device Speed To Post Trace" xil_pn:value="-3" xil_pn:valueState="default"/>
74
+    <property xil_pn:name="Combinatorial Logic Optimization" xil_pn:value="false" xil_pn:valueState="default"/>
75
+    <property xil_pn:name="Compile EDK Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/>
76
+    <property xil_pn:name="Compile SIMPRIM (Timing) Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/>
77
+    <property xil_pn:name="Compile UNISIM (Functional) Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/>
78
+    <property xil_pn:name="Compile XilinxCoreLib (CORE Generator) Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/>
79
+    <property xil_pn:name="Compile for HDL Debugging" xil_pn:value="true" xil_pn:valueState="default"/>
80
+    <property xil_pn:name="Configuration Clk (Configuration Pins)" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
81
+    <property xil_pn:name="Configuration Pin Done" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
82
+    <property xil_pn:name="Configuration Pin M0" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
83
+    <property xil_pn:name="Configuration Pin M1" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
84
+    <property xil_pn:name="Configuration Pin M2" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
85
+    <property xil_pn:name="Configuration Pin Program" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
86
+    <property xil_pn:name="Configuration Rate spartan6" xil_pn:value="2" xil_pn:valueState="default"/>
87
+    <property xil_pn:name="Correlate Output to Input Design" xil_pn:value="false" xil_pn:valueState="default"/>
88
+    <property xil_pn:name="Create ASCII Configuration File" xil_pn:value="false" xil_pn:valueState="default"/>
89
+    <property xil_pn:name="Create Binary Configuration File" xil_pn:value="false" xil_pn:valueState="default"/>
90
+    <property xil_pn:name="Create Bit File" xil_pn:value="true" xil_pn:valueState="default"/>
91
+    <property xil_pn:name="Create I/O Pads from Ports" xil_pn:value="false" xil_pn:valueState="default"/>
92
+    <property xil_pn:name="Create IEEE 1532 Configuration File spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
93
+    <property xil_pn:name="Create Logic Allocation File" xil_pn:value="false" xil_pn:valueState="default"/>
94
+    <property xil_pn:name="Create Mask File" xil_pn:value="false" xil_pn:valueState="default"/>
95
+    <property xil_pn:name="Create ReadBack Data Files" xil_pn:value="false" xil_pn:valueState="default"/>
96
+    <property xil_pn:name="Cross Clock Analysis" xil_pn:value="false" xil_pn:valueState="default"/>
97
+    <property xil_pn:name="DSP Utilization Ratio" xil_pn:value="100" xil_pn:valueState="default"/>
98
+    <property xil_pn:name="Delay Values To Be Read from SDF" xil_pn:value="Setup Time" xil_pn:valueState="default"/>
99
+    <property xil_pn:name="Device" xil_pn:value="xc6slx9" xil_pn:valueState="non-default"/>
100
+    <property xil_pn:name="Device Family" xil_pn:value="Spartan6" xil_pn:valueState="non-default"/>
101
+    <property xil_pn:name="Device Speed Grade/Select ABS Minimum" xil_pn:value="-3" xil_pn:valueState="default"/>
102
+    <property xil_pn:name="Disable Detailed Package Model Insertion" xil_pn:value="false" xil_pn:valueState="default"/>
103
+    <property xil_pn:name="Do Not Escape Signal and Instance Names in Netlist" xil_pn:value="false" xil_pn:valueState="default"/>
104
+    <property xil_pn:name="Done (Output Events)" xil_pn:value="Default (4)" xil_pn:valueState="default"/>
105
+    <property xil_pn:name="Drive Awake Pin During Suspend/Wake Sequence spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
106
+    <property xil_pn:name="Drive Done Pin High" xil_pn:value="false" xil_pn:valueState="default"/>
107
+    <property xil_pn:name="Enable BitStream Compression" xil_pn:value="false" xil_pn:valueState="default"/>
108
+    <property xil_pn:name="Enable Cyclic Redundancy Checking (CRC) spartan6" xil_pn:value="true" xil_pn:valueState="default"/>
109
+    <property xil_pn:name="Enable Debugging of Serial Mode BitStream" xil_pn:value="false" xil_pn:valueState="default"/>
110
+    <property xil_pn:name="Enable External Master Clock spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
111
+    <property xil_pn:name="Enable Hardware Co-Simulation" xil_pn:value="false" xil_pn:valueState="default"/>
112
+    <property xil_pn:name="Enable Internal Done Pipe" xil_pn:value="true" xil_pn:valueState="non-default"/>
113
+    <property xil_pn:name="Enable Message Filtering" xil_pn:value="false" xil_pn:valueState="default"/>
114
+    <property xil_pn:name="Enable Multi-Pin Wake-Up Suspend Mode spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
115
+    <property xil_pn:name="Enable Multi-Threading" xil_pn:value="Off" xil_pn:valueState="default"/>
116
+    <property xil_pn:name="Enable Multi-Threading par spartan6" xil_pn:value="Off" xil_pn:valueState="default"/>
117
+    <property xil_pn:name="Enable Outputs (Output Events)" xil_pn:value="Default (5)" xil_pn:valueState="default"/>
118
+    <property xil_pn:name="Enable Suspend/Wake Global Set/Reset spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
119
+    <property xil_pn:name="Encrypt Bitstream spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
120
+    <property xil_pn:name="Encrypt Key Select spartan6" xil_pn:value="BBRAM" xil_pn:valueState="default"/>
121
+    <property xil_pn:name="Equivalent Register Removal Map" xil_pn:value="true" xil_pn:valueState="default"/>
122
+    <property xil_pn:name="Equivalent Register Removal XST" xil_pn:value="true" xil_pn:valueState="default"/>
123
+    <property xil_pn:name="Essential Bits" xil_pn:value="false" xil_pn:valueState="default"/>
124
+    <property xil_pn:name="Evaluation Development Board" xil_pn:value="None Specified" xil_pn:valueState="default"/>
125
+    <property xil_pn:name="Exclude Compilation of Deprecated EDK Cores" xil_pn:value="true" xil_pn:valueState="default"/>
126
+    <property xil_pn:name="Exclude Compilation of EDK Sub-Libraries" xil_pn:value="false" xil_pn:valueState="default"/>
127
+    <property xil_pn:name="Extra Cost Tables Map" xil_pn:value="0" xil_pn:valueState="default"/>
128
+    <property xil_pn:name="Extra Effort (Highest PAR level only)" xil_pn:value="None" xil_pn:valueState="default"/>
129
+    <property xil_pn:name="FPGA Start-Up Clock" xil_pn:value="CCLK" xil_pn:valueState="default"/>
130
+    <property xil_pn:name="FSM Encoding Algorithm" xil_pn:value="Auto" xil_pn:valueState="default"/>
131
+    <property xil_pn:name="FSM Style" xil_pn:value="LUT" xil_pn:valueState="default"/>
132
+    <property xil_pn:name="Filter Files From Compile Order" xil_pn:value="true" xil_pn:valueState="default"/>
133
+    <property xil_pn:name="Flatten Output Netlist" xil_pn:value="false" xil_pn:valueState="default"/>
134
+    <property xil_pn:name="Functional Model Target Language ArchWiz" xil_pn:value="VHDL" xil_pn:valueState="default"/>
135
+    <property xil_pn:name="Functional Model Target Language Coregen" xil_pn:value="VHDL" xil_pn:valueState="default"/>
136
+    <property xil_pn:name="Functional Model Target Language Schematic" xil_pn:value="VHDL" xil_pn:valueState="default"/>
137
+    <property xil_pn:name="GTS Cycle During Suspend/Wakeup Sequence spartan6" xil_pn:value="4" xil_pn:valueState="default"/>
138
+    <property xil_pn:name="GWE Cycle During Suspend/Wakeup Sequence spartan6" xil_pn:value="5" xil_pn:valueState="default"/>
139
+    <property xil_pn:name="Generate Architecture Only (No Entity Declaration)" xil_pn:value="false" xil_pn:valueState="default"/>
140
+    <property xil_pn:name="Generate Asynchronous Delay Report" xil_pn:value="false" xil_pn:valueState="default"/>
141
+    <property xil_pn:name="Generate Clock Region Report" xil_pn:value="false" xil_pn:valueState="default"/>
142
+    <property xil_pn:name="Generate Constraints Interaction Report" xil_pn:value="false" xil_pn:valueState="default"/>
143
+    <property xil_pn:name="Generate Constraints Interaction Report Post Trace" xil_pn:value="false" xil_pn:valueState="default"/>
144
+    <property xil_pn:name="Generate Datasheet Section" xil_pn:value="true" xil_pn:valueState="default"/>
145
+    <property xil_pn:name="Generate Datasheet Section Post Trace" xil_pn:value="true" xil_pn:valueState="default"/>
146
+    <property xil_pn:name="Generate Detailed MAP Report" xil_pn:value="false" xil_pn:valueState="default"/>
147
+    <property xil_pn:name="Generate Multiple Hierarchical Netlist Files" xil_pn:value="false" xil_pn:valueState="default"/>
148
+    <property xil_pn:name="Generate Post-Place &amp; Route Power Report" xil_pn:value="false" xil_pn:valueState="default"/>
149
+    <property xil_pn:name="Generate Post-Place &amp; Route Simulation Model" xil_pn:value="false" xil_pn:valueState="default"/>
150
+    <property xil_pn:name="Generate RTL Schematic" xil_pn:value="Yes" xil_pn:valueState="default"/>
151
+    <property xil_pn:name="Generate SAIF File for Power Optimization/Estimation Par" xil_pn:value="false" xil_pn:valueState="default"/>
152
+    <property xil_pn:name="Generate Testbench File" xil_pn:value="false" xil_pn:valueState="default"/>
153
+    <property xil_pn:name="Generate Timegroups Section" xil_pn:value="false" xil_pn:valueState="default"/>
154
+    <property xil_pn:name="Generate Timegroups Section Post Trace" xil_pn:value="false" xil_pn:valueState="default"/>
155
+    <property xil_pn:name="Generics, Parameters" xil_pn:value="" xil_pn:valueState="default"/>
156
+    <property xil_pn:name="Global Optimization Goal" xil_pn:value="AllClockNets" xil_pn:valueState="default"/>
157
+    <property xil_pn:name="Global Optimization map spartan6" xil_pn:value="Off" xil_pn:valueState="default"/>
158
+    <property xil_pn:name="Global Set/Reset Port Name" xil_pn:value="GSR_PORT" xil_pn:valueState="default"/>
159
+    <property xil_pn:name="Global Tristate Port Name" xil_pn:value="GTS_PORT" xil_pn:valueState="default"/>
160
+    <property xil_pn:name="Hierarchy Separator" xil_pn:value="/" xil_pn:valueState="default"/>
161
+    <property xil_pn:name="ISim UUT Instance Name" xil_pn:value="UUT" xil_pn:valueState="default"/>
162
+    <property xil_pn:name="Ignore User Timing Constraints Map" xil_pn:value="false" xil_pn:valueState="default"/>
163
+    <property xil_pn:name="Ignore User Timing Constraints Par" xil_pn:value="false" xil_pn:valueState="default"/>
164
+    <property xil_pn:name="Implementation Top" xil_pn:value="Module|magneto_i2c" xil_pn:valueState="non-default"/>
165
+    <property xil_pn:name="Implementation Top File" xil_pn:value="magneto_i2c.sch" xil_pn:valueState="non-default"/>
166
+    <property xil_pn:name="Implementation Top Instance Path" xil_pn:value="/magneto_i2c" xil_pn:valueState="non-default"/>
167
+    <property xil_pn:name="Include 'uselib Directive in Verilog File" xil_pn:value="false" xil_pn:valueState="default"/>
168
+    <property xil_pn:name="Include SIMPRIM Models in Verilog File" xil_pn:value="false" xil_pn:valueState="default"/>
169
+    <property xil_pn:name="Include UNISIM Models in Verilog File" xil_pn:value="false" xil_pn:valueState="default"/>
170
+    <property xil_pn:name="Include sdf_annotate task in Verilog File" xil_pn:value="true" xil_pn:valueState="default"/>
171
+    <property xil_pn:name="Incremental Compilation" xil_pn:value="true" xil_pn:valueState="default"/>
172
+    <property xil_pn:name="Insert Buffers to Prevent Pulse Swallowing" xil_pn:value="true" xil_pn:valueState="default"/>
173
+    <property xil_pn:name="Instantiation Template Target Language Xps" xil_pn:value="VHDL" xil_pn:valueState="default"/>
174
+    <property xil_pn:name="JTAG Pin TCK" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
175
+    <property xil_pn:name="JTAG Pin TDI" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
176
+    <property xil_pn:name="JTAG Pin TDO" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
177
+    <property xil_pn:name="JTAG Pin TMS" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
178
+    <property xil_pn:name="Keep Hierarchy" xil_pn:value="No" xil_pn:valueState="default"/>
179
+    <property xil_pn:name="LUT Combining Map" xil_pn:value="Off" xil_pn:valueState="default"/>
180
+    <property xil_pn:name="LUT Combining Xst" xil_pn:value="Auto" xil_pn:valueState="default"/>
181
+    <property xil_pn:name="Language" xil_pn:value="VHDL" xil_pn:valueState="default"/>
182
+    <property xil_pn:name="Last Applied Goal" xil_pn:value="Balanced" xil_pn:valueState="default"/>
183
+    <property xil_pn:name="Last Applied Strategy" xil_pn:value="Xilinx Default (unlocked)" xil_pn:valueState="default"/>
184
+    <property xil_pn:name="Last Unlock Status" xil_pn:value="false" xil_pn:valueState="default"/>
185
+    <property xil_pn:name="Launch SDK after Export" xil_pn:value="true" xil_pn:valueState="default"/>
186
+    <property xil_pn:name="Library for Verilog Sources" xil_pn:value="" xil_pn:valueState="default"/>
187
+    <property xil_pn:name="Load glbl" xil_pn:value="true" xil_pn:valueState="default"/>
188
+    <property xil_pn:name="Manual Implementation Compile Order" xil_pn:value="false" xil_pn:valueState="default"/>
189
+    <property xil_pn:name="Map Slice Logic into Unused Block RAMs" xil_pn:value="false" xil_pn:valueState="default"/>
190
+    <property xil_pn:name="Mask Pins for Multi-Pin Wake-Up Suspend Mode spartan6" xil_pn:value="0x00" xil_pn:valueState="default"/>
191
+    <property xil_pn:name="Max Fanout" xil_pn:value="100000" xil_pn:valueState="default"/>
192
+    <property xil_pn:name="Maximum Compression" xil_pn:value="false" xil_pn:valueState="default"/>
193
+    <property xil_pn:name="Maximum Number of Lines in Report" xil_pn:value="1000" xil_pn:valueState="default"/>
194
+    <property xil_pn:name="Maximum Signal Name Length" xil_pn:value="20" xil_pn:valueState="default"/>
195
+    <property xil_pn:name="Move First Flip-Flop Stage" xil_pn:value="true" xil_pn:valueState="default"/>
196
+    <property xil_pn:name="Move Last Flip-Flop Stage" xil_pn:value="true" xil_pn:valueState="default"/>
197
+    <property xil_pn:name="MultiBoot: Insert IPROG CMD in the Bitfile spartan6" xil_pn:value="Enable" xil_pn:valueState="default"/>
198
+    <property xil_pn:name="MultiBoot: Next Configuration Mode spartan6" xil_pn:value="001" xil_pn:valueState="default"/>
199
+    <property xil_pn:name="MultiBoot: Starting Address for Golden Configuration spartan6" xil_pn:value="0x00000000" xil_pn:valueState="default"/>
200
+    <property xil_pn:name="MultiBoot: Starting Address for Next Configuration spartan6" xil_pn:value="0x00000000" xil_pn:valueState="default"/>
201
+    <property xil_pn:name="MultiBoot: Use New Mode for Next Configuration spartan6" xil_pn:value="true" xil_pn:valueState="default"/>
202
+    <property xil_pn:name="MultiBoot: User-Defined Register for Failsafe Scheme spartan6" xil_pn:value="0x0000" xil_pn:valueState="default"/>
203
+    <property xil_pn:name="Netlist Hierarchy" xil_pn:value="As Optimized" xil_pn:valueState="default"/>
204
+    <property xil_pn:name="Netlist Translation Type" xil_pn:value="Timestamp" xil_pn:valueState="default"/>
205
+    <property xil_pn:name="Number of Clock Buffers" xil_pn:value="16" xil_pn:valueState="default"/>
206
+    <property xil_pn:name="Number of Paths in Error/Verbose Report" xil_pn:value="3" xil_pn:valueState="default"/>
207
+    <property xil_pn:name="Number of Paths in Error/Verbose Report Post Trace" xil_pn:value="3" xil_pn:valueState="default"/>
208
+    <property xil_pn:name="Optimization Effort spartan6" xil_pn:value="Normal" xil_pn:valueState="default"/>
209
+    <property xil_pn:name="Optimization Goal" xil_pn:value="Speed" xil_pn:valueState="default"/>
210
+    <property xil_pn:name="Optimize Instantiated Primitives" xil_pn:value="false" xil_pn:valueState="default"/>
211
+    <property xil_pn:name="Other Bitgen Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
212
+    <property xil_pn:name="Other Bitgen Command Line Options spartan6" xil_pn:value="" xil_pn:valueState="default"/>
213
+    <property xil_pn:name="Other Compiler Options" xil_pn:value="" xil_pn:valueState="default"/>
214
+    <property xil_pn:name="Other Compiler Options Map" xil_pn:value="" xil_pn:valueState="default"/>
215
+    <property xil_pn:name="Other Compiler Options Par" xil_pn:value="" xil_pn:valueState="default"/>
216
+    <property xil_pn:name="Other Compiler Options Translate" xil_pn:value="" xil_pn:valueState="default"/>
217
+    <property xil_pn:name="Other Compxlib Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
218
+    <property xil_pn:name="Other Map Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
219
+    <property xil_pn:name="Other NETGEN Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
220
+    <property xil_pn:name="Other Ngdbuild Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
221
+    <property xil_pn:name="Other Place &amp; Route Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
222
+    <property xil_pn:name="Other Simulator Commands Behavioral" xil_pn:value="" xil_pn:valueState="default"/>
223
+    <property xil_pn:name="Other Simulator Commands Post-Map" xil_pn:value="" xil_pn:valueState="default"/>
224
+    <property xil_pn:name="Other Simulator Commands Post-Route" xil_pn:value="" xil_pn:valueState="default"/>
225
+    <property xil_pn:name="Other Simulator Commands Post-Translate" xil_pn:value="" xil_pn:valueState="default"/>
226
+    <property xil_pn:name="Other XPWR Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
227
+    <property xil_pn:name="Other XST Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
228
+    <property xil_pn:name="Output Extended Identifiers" xil_pn:value="false" xil_pn:valueState="default"/>
229
+    <property xil_pn:name="Output File Name" xil_pn:value="magneto_i2c" xil_pn:valueState="default"/>
230
+    <property xil_pn:name="Overwrite Compiled Libraries" xil_pn:value="false" xil_pn:valueState="default"/>
231
+    <property xil_pn:name="Overwrite Existing Symbol" xil_pn:value="false" xil_pn:valueState="default"/>
232
+    <property xil_pn:name="Pack I/O Registers into IOBs" xil_pn:value="Auto" xil_pn:valueState="default"/>
233
+    <property xil_pn:name="Pack I/O Registers/Latches into IOBs" xil_pn:value="Off" xil_pn:valueState="default"/>
234
+    <property xil_pn:name="Package" xil_pn:value="tqg144" xil_pn:valueState="default"/>
235
+    <property xil_pn:name="Perform Advanced Analysis" xil_pn:value="false" xil_pn:valueState="default"/>
236
+    <property xil_pn:name="Perform Advanced Analysis Post Trace" xil_pn:value="false" xil_pn:valueState="default"/>
237
+    <property xil_pn:name="Perform Timing-Driven Packing and Placement" xil_pn:value="false" xil_pn:valueState="default"/>
238
+    <property xil_pn:name="Place &amp; Route Effort Level (Overall)" xil_pn:value="High" xil_pn:valueState="default"/>
239
+    <property xil_pn:name="Place And Route Mode" xil_pn:value="Normal Place and Route" xil_pn:valueState="default"/>
240
+    <property xil_pn:name="Place MultiBoot Settings into Bitstream spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
241
+    <property xil_pn:name="Placer Effort Level Map" xil_pn:value="High" xil_pn:valueState="default"/>
242
+    <property xil_pn:name="Placer Extra Effort Map" xil_pn:value="None" xil_pn:valueState="default"/>
243
+    <property xil_pn:name="Port to be used" xil_pn:value="Auto - default" xil_pn:valueState="default"/>
244
+    <property xil_pn:name="Post Map Simulation Model Name" xil_pn:value="magneto_i2c_map.vhd" xil_pn:valueState="default"/>
245
+    <property xil_pn:name="Post Place &amp; Route Simulation Model Name" xil_pn:value="magneto_i2c_timesim.vhd" xil_pn:valueState="default"/>
246
+    <property xil_pn:name="Post Synthesis Simulation Model Name" xil_pn:value="magneto_i2c_synthesis.vhd" xil_pn:valueState="default"/>
247
+    <property xil_pn:name="Post Translate Simulation Model Name" xil_pn:value="magneto_i2c_translate.vhd" xil_pn:valueState="default"/>
248
+    <property xil_pn:name="Power Reduction Map spartan6" xil_pn:value="Off" xil_pn:valueState="default"/>
249
+    <property xil_pn:name="Power Reduction Par" xil_pn:value="false" xil_pn:valueState="default"/>
250
+    <property xil_pn:name="Power Reduction Xst" xil_pn:value="false" xil_pn:valueState="default"/>
251
+    <property xil_pn:name="Preferred Language" xil_pn:value="VHDL" xil_pn:valueState="non-default"/>
252
+    <property xil_pn:name="Produce Verbose Report" xil_pn:value="false" xil_pn:valueState="default"/>
253
+    <property xil_pn:name="Project Description" xil_pn:value="" xil_pn:valueState="default"/>
254
+    <property xil_pn:name="Property Specification in Project File" xil_pn:value="Store all values" xil_pn:valueState="default"/>
255
+    <property xil_pn:name="RAM Extraction" xil_pn:value="true" xil_pn:valueState="default"/>
256
+    <property xil_pn:name="RAM Style" xil_pn:value="Auto" xil_pn:valueState="default"/>
257
+    <property xil_pn:name="ROM Extraction" xil_pn:value="true" xil_pn:valueState="default"/>
258
+    <property xil_pn:name="ROM Style" xil_pn:value="Auto" xil_pn:valueState="default"/>
259
+    <property xil_pn:name="Read Cores" xil_pn:value="true" xil_pn:valueState="default"/>
260
+    <property xil_pn:name="Reduce Control Sets" xil_pn:value="Auto" xil_pn:valueState="default"/>
261
+    <property xil_pn:name="Regenerate Core" xil_pn:value="Under Current Project Setting" xil_pn:valueState="default"/>
262
+    <property xil_pn:name="Register Balancing" xil_pn:value="No" xil_pn:valueState="default"/>
263
+    <property xil_pn:name="Register Duplication Map" xil_pn:value="Off" xil_pn:valueState="default"/>
264
+    <property xil_pn:name="Register Duplication Xst" xil_pn:value="true" xil_pn:valueState="default"/>
265
+    <property xil_pn:name="Register Ordering spartan6" xil_pn:value="4" xil_pn:valueState="default"/>
266
+    <property xil_pn:name="Release Write Enable (Output Events)" xil_pn:value="Default (6)" xil_pn:valueState="default"/>
267
+    <property xil_pn:name="Rename Design Instance in Testbench File to" xil_pn:value="UUT" xil_pn:valueState="default"/>
268
+    <property xil_pn:name="Rename Top Level Architecture To" xil_pn:value="Structure" xil_pn:valueState="default"/>
269
+    <property xil_pn:name="Rename Top Level Entity to" xil_pn:value="magneto_i2c" xil_pn:valueState="default"/>
270
+    <property xil_pn:name="Rename Top Level Module To" xil_pn:value="" xil_pn:valueState="default"/>
271
+    <property xil_pn:name="Report Fastest Path(s) in Each Constraint" xil_pn:value="true" xil_pn:valueState="default"/>
272
+    <property xil_pn:name="Report Fastest Path(s) in Each Constraint Post Trace" xil_pn:value="true" xil_pn:valueState="default"/>
273
+    <property xil_pn:name="Report Paths by Endpoint" xil_pn:value="3" xil_pn:valueState="default"/>
274
+    <property xil_pn:name="Report Paths by Endpoint Post Trace" xil_pn:value="3" xil_pn:valueState="default"/>
275
+    <property xil_pn:name="Report Type" xil_pn:value="Verbose Report" xil_pn:valueState="default"/>
276
+    <property xil_pn:name="Report Type Post Trace" xil_pn:value="Verbose Report" xil_pn:valueState="default"/>
277
+    <property xil_pn:name="Report Unconstrained Paths" xil_pn:value="" xil_pn:valueState="default"/>
278
+    <property xil_pn:name="Report Unconstrained Paths Post Trace" xil_pn:value="" xil_pn:valueState="default"/>
279
+    <property xil_pn:name="Reset On Configuration Pulse Width" xil_pn:value="100" xil_pn:valueState="default"/>
280
+    <property xil_pn:name="Resource Sharing" xil_pn:value="true" xil_pn:valueState="default"/>
281
+    <property xil_pn:name="Retain Hierarchy" xil_pn:value="true" xil_pn:valueState="default"/>
282
+    <property xil_pn:name="Retry Configuration if CRC Error Occurs spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
283
+    <property xil_pn:name="Revision Select" xil_pn:value="00" xil_pn:valueState="default"/>
284
+    <property xil_pn:name="Revision Select Tristate" xil_pn:value="Disable" xil_pn:valueState="default"/>
285
+    <property xil_pn:name="Run Design Rules Checker (DRC)" xil_pn:value="true" xil_pn:valueState="default"/>
286
+    <property xil_pn:name="Run for Specified Time" xil_pn:value="true" xil_pn:valueState="default"/>
287
+    <property xil_pn:name="Run for Specified Time Map" xil_pn:value="true" xil_pn:valueState="default"/>
288
+    <property xil_pn:name="Run for Specified Time Par" xil_pn:value="true" xil_pn:valueState="default"/>
289
+    <property xil_pn:name="Run for Specified Time Translate" xil_pn:value="true" xil_pn:valueState="default"/>
290
+    <property xil_pn:name="Safe Implementation" xil_pn:value="No" xil_pn:valueState="default"/>
291
+    <property xil_pn:name="Security" xil_pn:value="Enable Readback and Reconfiguration" xil_pn:valueState="default"/>
292
+    <property xil_pn:name="Selected Simulation Root Source Node Behavioral" xil_pn:value="" xil_pn:valueState="default"/>
293
+    <property xil_pn:name="Selected Simulation Root Source Node Post-Map" xil_pn:value="" xil_pn:valueState="default"/>
294
+    <property xil_pn:name="Selected Simulation Root Source Node Post-Route" xil_pn:value="" xil_pn:valueState="default"/>
295
+    <property xil_pn:name="Selected Simulation Root Source Node Post-Translate" xil_pn:value="" xil_pn:valueState="default"/>
296
+    <property xil_pn:name="Selected Simulation Source Node" xil_pn:value="UUT" xil_pn:valueState="default"/>
297
+    <property xil_pn:name="Set SPI Configuration Bus Width spartan6" xil_pn:value="1" xil_pn:valueState="default"/>
298
+    <property xil_pn:name="Setup External Master Clock Division spartan6" xil_pn:value="1" xil_pn:valueState="default"/>
299
+    <property xil_pn:name="Shift Register Extraction" xil_pn:value="true" xil_pn:valueState="default"/>
300
+    <property xil_pn:name="Shift Register Minimum Size spartan6" xil_pn:value="2" xil_pn:valueState="default"/>
301
+    <property xil_pn:name="Show All Models" xil_pn:value="false" xil_pn:valueState="default"/>
302
+    <property xil_pn:name="Simulation Model Target" xil_pn:value="VHDL" xil_pn:valueState="default"/>
303
+    <property xil_pn:name="Simulation Run Time ISim" xil_pn:value="1000 ns" xil_pn:valueState="default"/>
304
+    <property xil_pn:name="Simulation Run Time Map" xil_pn:value="1000 ns" xil_pn:valueState="default"/>
305
+    <property xil_pn:name="Simulation Run Time Par" xil_pn:value="1000 ns" xil_pn:valueState="default"/>
306
+    <property xil_pn:name="Simulation Run Time Translate" xil_pn:value="1000 ns" xil_pn:valueState="default"/>
307
+    <property xil_pn:name="Simulator" xil_pn:value="ISim (VHDL/Verilog)" xil_pn:valueState="default"/>
308
+    <property xil_pn:name="Slice Utilization Ratio" xil_pn:value="100" xil_pn:valueState="default"/>
309
+    <property xil_pn:name="Specify 'define Macro Name and Value" xil_pn:value="" xil_pn:valueState="default"/>
310
+    <property xil_pn:name="Specify Top Level Instance Names Behavioral" xil_pn:value="Default" xil_pn:valueState="default"/>
311
+    <property xil_pn:name="Specify Top Level Instance Names Post-Map" xil_pn:value="Default" xil_pn:valueState="default"/>
312
+    <property xil_pn:name="Specify Top Level Instance Names Post-Route" xil_pn:value="Default" xil_pn:valueState="default"/>
313
+    <property xil_pn:name="Specify Top Level Instance Names Post-Translate" xil_pn:value="Default" xil_pn:valueState="default"/>
314
+    <property xil_pn:name="Speed Grade" xil_pn:value="-3" xil_pn:valueState="default"/>
315
+    <property xil_pn:name="Starting Placer Cost Table (1-100) Map spartan6" xil_pn:value="1" xil_pn:valueState="default"/>
316
+    <property xil_pn:name="Synthesis Tool" xil_pn:value="XST (VHDL/Verilog)" xil_pn:valueState="default"/>
317
+    <property xil_pn:name="Target Simulator" xil_pn:value="Please Specify" xil_pn:valueState="default"/>
318
+    <property xil_pn:name="Timing Mode Map" xil_pn:value="Performance Evaluation" xil_pn:valueState="default"/>
319
+    <property xil_pn:name="Timing Mode Par" xil_pn:value="Performance Evaluation" xil_pn:valueState="default"/>
320
+    <property xil_pn:name="Top-Level Module Name in Output Netlist" xil_pn:value="" xil_pn:valueState="default"/>
321
+    <property xil_pn:name="Top-Level Source Type" xil_pn:value="HDL" xil_pn:valueState="default"/>
322
+    <property xil_pn:name="Trim Unconnected Signals" xil_pn:value="true" xil_pn:valueState="default"/>
323
+    <property xil_pn:name="Tristate On Configuration Pulse Width" xil_pn:value="0" xil_pn:valueState="default"/>
324
+    <property xil_pn:name="Unused IOB Pins" xil_pn:value="Pull Down" xil_pn:valueState="default"/>
325
+    <property xil_pn:name="Use 64-bit PlanAhead on 64-bit Systems" xil_pn:value="true" xil_pn:valueState="default"/>
326
+    <property xil_pn:name="Use Clock Enable" xil_pn:value="Auto" xil_pn:valueState="default"/>
327
+    <property xil_pn:name="Use Custom Project File Behavioral" xil_pn:value="false" xil_pn:valueState="default"/>
328
+    <property xil_pn:name="Use Custom Project File Post-Map" xil_pn:value="false" xil_pn:valueState="default"/>
329
+    <property xil_pn:name="Use Custom Project File Post-Route" xil_pn:value="false" xil_pn:valueState="default"/>
330
+    <property xil_pn:name="Use Custom Project File Post-Translate" xil_pn:value="false" xil_pn:valueState="default"/>
331
+    <property xil_pn:name="Use Custom Simulation Command File Behavioral" xil_pn:value="false" xil_pn:valueState="default"/>
332
+    <property xil_pn:name="Use Custom Simulation Command File Map" xil_pn:value="false" xil_pn:valueState="default"/>
333
+    <property xil_pn:name="Use Custom Simulation Command File Par" xil_pn:value="false" xil_pn:valueState="default"/>
334
+    <property xil_pn:name="Use Custom Simulation Command File Translate" xil_pn:value="false" xil_pn:valueState="default"/>
335
+    <property xil_pn:name="Use Custom Waveform Configuration File Behav" xil_pn:value="false" xil_pn:valueState="default"/>
336
+    <property xil_pn:name="Use Custom Waveform Configuration File Map" xil_pn:value="false" xil_pn:valueState="default"/>
337
+    <property xil_pn:name="Use Custom Waveform Configuration File Par" xil_pn:value="false" xil_pn:valueState="default"/>
338
+    <property xil_pn:name="Use Custom Waveform Configuration File Translate" xil_pn:value="false" xil_pn:valueState="default"/>
339
+    <property xil_pn:name="Use DSP Block spartan6" xil_pn:value="Auto" xil_pn:valueState="default"/>
340
+    <property xil_pn:name="Use LOC Constraints" xil_pn:value="true" xil_pn:valueState="default"/>
341
+    <property xil_pn:name="Use RLOC Constraints" xil_pn:value="Yes" xil_pn:valueState="default"/>
342
+    <property xil_pn:name="Use Smart Guide" xil_pn:value="false" xil_pn:valueState="default"/>
343
+    <property xil_pn:name="Use Synchronous Reset" xil_pn:value="Auto" xil_pn:valueState="default"/>
344
+    <property xil_pn:name="Use Synchronous Set" xil_pn:value="Auto" xil_pn:valueState="default"/>
345
+    <property xil_pn:name="Use Synthesis Constraints File" xil_pn:value="true" xil_pn:valueState="default"/>
346
+    <property xil_pn:name="User Browsed Strategy Files" xil_pn:value="" xil_pn:valueState="default"/>
347
+    <property xil_pn:name="UserID Code (8 Digit Hexadecimal)" xil_pn:value="0xFFFFFFFF" xil_pn:valueState="default"/>
348
+    <property xil_pn:name="VCCAUX Voltage Level spartan6" xil_pn:value="2.5V" xil_pn:valueState="default"/>
349
+    <property xil_pn:name="VHDL Source Analysis Standard" xil_pn:value="VHDL-93" xil_pn:valueState="default"/>
350
+    <property xil_pn:name="Value Range Check" xil_pn:value="false" xil_pn:valueState="default"/>
351
+    <property xil_pn:name="Verilog Macros" xil_pn:value="" xil_pn:valueState="default"/>
352
+    <property xil_pn:name="Wait for DCM and PLL Lock (Output Events) spartan6" xil_pn:value="Default (NoWait)" xil_pn:valueState="default"/>
353
+    <property xil_pn:name="Wakeup Clock spartan6" xil_pn:value="Startup Clock" xil_pn:valueState="default"/>
354
+    <property xil_pn:name="Watchdog Timer Value spartan6" xil_pn:value="0xFFFF" xil_pn:valueState="default"/>
355
+    <property xil_pn:name="Working Directory" xil_pn:value="." xil_pn:valueState="non-default"/>
356
+    <property xil_pn:name="Write Timing Constraints" xil_pn:value="false" xil_pn:valueState="default"/>
357
+    <property xil_pn:name="iMPACT Project File" xil_pn:value="magneto_impact.ipf" xil_pn:valueState="non-default"/>
358
+    <!--                                                                                  -->
359
+    <!-- The following properties are for internal use only. These should not be modified.-->
360
+    <!--                                                                                  -->
361
+    <property xil_pn:name="PROP_BehavioralSimTop" xil_pn:value="" xil_pn:valueState="default"/>
362
+    <property xil_pn:name="PROP_DesignName" xil_pn:value="ucisw2_magnetometr" xil_pn:valueState="non-default"/>
363
+    <property xil_pn:name="PROP_DevFamilyPMName" xil_pn:value="spartan6" xil_pn:valueState="default"/>
364
+    <property xil_pn:name="PROP_FPGAConfiguration" xil_pn:value="FPGAConfiguration" xil_pn:valueState="default"/>
365
+    <property xil_pn:name="PROP_PostMapSimTop" xil_pn:value="" xil_pn:valueState="default"/>
366
+    <property xil_pn:name="PROP_PostParSimTop" xil_pn:value="" xil_pn:valueState="default"/>
367
+    <property xil_pn:name="PROP_PostSynthSimTop" xil_pn:value="" xil_pn:valueState="default"/>
368
+    <property xil_pn:name="PROP_PostXlateSimTop" xil_pn:value="" xil_pn:valueState="default"/>
369
+    <property xil_pn:name="PROP_PreSynthesis" xil_pn:value="PreSynthesis" xil_pn:valueState="default"/>
370
+    <property xil_pn:name="PROP_intProjectCreationTimestamp" xil_pn:value="2018-02-27T19:49:27" xil_pn:valueState="non-default"/>
371
+    <property xil_pn:name="PROP_intWbtProjectID" xil_pn:value="314A4698C6E04344934998418F4F4609" xil_pn:valueState="non-default"/>
372
+    <property xil_pn:name="PROP_intWorkingDirLocWRTProjDir" xil_pn:value="Same" xil_pn:valueState="non-default"/>
373
+    <property xil_pn:name="PROP_intWorkingDirUsed" xil_pn:value="No" xil_pn:valueState="non-default"/>
374
+  </properties>
375
+
376
+  <bindings/>
377
+
378
+  <libraries/>
379
+
380
+  <autoManagedFiles>
381
+    <!-- The following files are identified by `include statements in verilog -->
382
+    <!-- source files and are automatically managed by Project Navigator.     -->
383
+    <!--                                                                      -->
384
+    <!-- Do not hand-edit this section, as it will be overwritten when the    -->
385
+    <!-- project is analyzed based on files automatically identified as       -->
386
+    <!-- include files.                                                       -->
387
+  </autoManagedFiles>
388
+
389
+</project>

Loading…
Annuler
Enregistrer