library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; LIBRARY lpm; USE lpm.lpm_components.ALL; --overall file, this file calls all other necessary files needed for the weather station entity chip is generic (width: positive:= 8); port (clock,resetbutton: in std_logic; rs : out std_logic; LCDdataout: buffer std_logic_vector(width-1 downto 0); a,b,c,d: in std_logic; polarity: in std_logic; indata: in std_logic_vector(4-1 downto 0); invstrobe: in std_logic; d5,d4,d3,d2,d1 : in std_logic; ADC_CLOCK: out std_logic; sensor1, sensor2 : in std_logic; clk_en, cnt_en: in std_logic; e: buffer std_logic -- Q: out std_logic_vector(width-1 downto 0); -- load: in std_logic -- rs232result: out std_logic ); end entity; architecture x of chip is --component which does the actual displaying of the LCDcontroller letters and numbers component projectlcdcontroller generic(lcdcontroller: positive := 8; PaceMODULUS : STRING := "32"; Pacewidth: positive:= 6; Sequencewidth: positive:= 6; Seqmodulus: string:= "32"; FF_Width: positive := 1 ); port ( clock: in std_logic; reset: in std_logic; windfirstdir: in std_logic_vector(lcdcontroller-1 downto 0); windseconddir: in std_logic_vector(lcdcontroller-1 downto 0); windthirddir: in std_logic_vector(lcdcontroller-1 downto 0); polarityoutascii: in std_logic_vector(lcdcontroller-1 downto 0); number5: in std_logic_vector(lcdcontroller-1 downto 0); number4: in std_logic_vector(lcdcontroller-1 downto 0); number3: in std_logic_vector(lcdcontroller-1 downto 0); number2: in std_logic_vector(lcdcontroller-1 downto 0); number1: in std_logic_vector(lcdcontroller-1 downto 0); windq1: in std_logic_vector(lcdcontroller-1 downto 0); windtq10: in std_logic_vector(lcdcontroller-1 downto 0); windhq100: in std_logic_vector(lcdcontroller-1 downto 0); rs: out std_logic; e: buffer std_logic; LCDdataout: buffer std_logic_vector(lcdcontroller-1 downto 0)); end component; --component which figures out the wind direction component winddirection generic(winddirwidth: positive := 8); port (clock, a,b,c,d: in std_logic; windfirstdir: buffer std_logic_vector(winddirwidth-1 downto 0); windseconddir: buffer std_logic_vector(winddirwidth-1 downto 0); windthirddir: buffer std_logic_vector(winddirwidth-1 downto 0)); end component; --component which figures out the temperature component temperature is generic( word:positive:=4); port(clock: in std_logic; polarity: in std_logic; indata : in std_logic_vector(word-1 downto 0) ; d5: in std_logic; d4: in std_logic; d3: in std_logic; d2 : in std_logic; d1: in std_logic; invstrobe: in std_logic; ADC_CLOCK: out std_logic; number5: out std_logic_vector(7 downto 0); number4: out std_logic_vector(7 downto 0); number3: out std_logic_vector(7 downto 0); number2: out std_logic_vector(7 downto 0); number1: out std_logic_vector(7 downto 0); polarityoutascii: out std_logic_vector(2*word -1 downto 0)); end component; --component which figures out the windspeed component windspeed is generic(windspeedwidth: positive:= 4; bigcounterwidth :positive :=4); port(clock, sensor1, sensor2: in std_logic; clk_en: in std_logic; cnt_en: in std_logic; sclr: in std_logic; windq1: out std_logic_vector(2* windspeedwidth-1 downto 0); windtq10 : out std_logic_vector(2* windspeedwidth-1 downto 0); windhq100: out std_logic_vector(2* windspeedwidth-1 downto 0)); end component; --component which does the reset (switches active low to active high, --active high is used in all other components) component togglereset is port(resetbutton: in std_logic; reset: out std_logic); end component; --component rs232rotate is -- generic(width: positive:= 8); -- port(clock, reset, load: in std_logic; -- data: in std_logic_vector(width-1 downto 0); -- Q: out std_logic_vector(width-1 downto 0); -- rs232result: out std_logic); --end component; signal windfirstdir, windseconddir, windthirddir: std_logic_vector(width-1 downto 0); signal asciitemp, asciipolarity: std_logic_vector(width-1 downto 0); signal polarityoutascii,number5, number4: std_logic_vector(width-1 downto 0); signal number3,number2,number1: std_logic_vector(width-1 downto 0); signal windq1, windtq10, windhq100 : std_logic_vector(width-1 downto 0); signal reset: std_logic; begin --port mapping of all components to the top level of the chip calclcd: projectlcdcontroller port map ( clock => clock, reset => reset, rs => rs, windfirstdir => windfirstdir, windseconddir => windseconddir, windthirddir => windthirddir, LCDdataout => LCDdataout, polarityoutascii => polarityoutascii, number5 => number5, number4 => number4, number3 => number3, number2 => number2, number1 => number1, windq1 => windq1, windtq10 => windtq10, windhq100 => windhq100, e => e); calcwinddir: winddirection port map ( clock => clock, a => a, b => b, c => c, d => d, windfirstdir => windfirstdir, windseconddir => windseconddir, windthirddir => windthirddir); calctemp: temperature port map( clock => clock, polarity => polarity, indata => indata, d5 => d5, d4 => d4, d3 => d3, d2 => d2, d1 => d1, invstrobe => invstrobe, ADC_CLOCK=> ADC_CLOCK, number5 => number5, number4 => number4, number3 => number3, number2 => number2, number1 => number1, polarityoutascii => polarityoutascii); calcwindspeed: windspeed port map( clock => clock, sensor1 => sensor1, sensor2 => sensor2, clk_en => clk_en, cnt_en => cnt_en, sclr => reset, windq1 => windq1, windtq10 => windtq10, windhq100 => windhq100); calcreset: togglereset port map ( resetbutton => resetbutton, reset => reset); -- calcrs2: rs232rotate port map( -- clock => clock, -- reset => reset, -- data => LCDdataout, -- Q => Q, -- load => load, -- rs232result => rs232result); end x;