Till KTH:s startsida Till KTH:s startsida

Ändringar mellan två versioner

Här visas ändringar i "VHDL-program med Quartus (sw)" mellan 2014-11-03 12:22 av William Sandqvist och 2014-11-03 12:23 av William Sandqvist.

Visa < föregående | nästa > ändring.

VHDL-program med Quartus (sw)

sw VHDL-program med Quartus

[IMAGE] QuartusTutor.pdf

[IMAGE]

Välj rätt programversion - i skolan finns flera olika installerade under startmenyn!

Altera 13.0.1.232 Web edition\ Quartus II Web Edition 13.0.1.232\ Quartus II 13.0sp1 (32bit)

[IMAGE]

Starta Quartus. Du behöver ingen licens och inte heller köpa något. Blir Du inte direkt erbjuden att starta New Project Wizard, så kan Du även välja det alternativet från File-menyn.

[IMAGE]

Introduction Klicka på Next.

[IMAGE]

Project Name and Directory

I skolan måste hela projektet ligga i en mapp på ditt H:\, tex. H:\MAXwork (hemma på ditt C:\, tex. C:\MAXwork)Name: codelockTop-Level Entity: codelock(OBS namnet codelock måste "matcha" det namn Du senare anger som entity i din VHDL-fil)

Gå vidare med Next.

[IMAGE]

Add files Vi har inga filer att lägga till projektet, så vi går vidare med Next.

[IMAGE]

Family and Device Settings Här anger vi vilket chip vi tänker använda under laborationen.

Family: MAX3000A Available devices: EPM3032ALC44-10

Gå vidare med Next.

[IMAGE]

EDA tools setting Här kan man skapa sammanhang med programverktyg från andra leverantörer. Vi kommer att simulera med programmet ModelSim men det behöver vi inte ange. Gå vidare med Next.

[IMAGE]

Summary, sammanfattning. Här ser Du en sammanfattning av dina val, avsluta "Wizard" med Finish.

[IMAGE]

Projektet har skapats [IMAGE]

VHDL-koden [IMAGE]

Skapa en blank fil för VHDL-koden. File, New, VHDL File.

Kopiera Mall-programmet lockmall.vhd och klistra in det i Quartus texteditor.

library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; entity codelock is port( clk: in std_logic; K: in std_logic_vector(1 to 3); R: in std_logic_vector(1 to 4); q: out std_logic_vector(4 downto 0); UNLOCK: out std_logic ); end codelock; architecture behavior of codelock is subtype state_type is integer range 0 to 31; signal state, nextstate: state_type; begin nextstate_decoder: -- next state decoding part process(state, K, R) begin case state is when 0 => if (K = "001" and R ="0001") then nextstate <= 1; else nextstate <= 0; end if; when 1 => if (K = "001" and R = "0001") then nextstate <= 1; elsif (K = "000" and R = "0000") then nextstate <= 2; else nextstate <= 0; end if; when 2 to 30 => nextstate <= state + 1; when 31 => nextstate <= 0; end case; end process; debug_output: -- display the state q <= conv_std_logic_vector(state,5); output_decoder: -- output decoder part process(state) begin case state is when 0 to 1 => UNLOCK <= '0'; when 2 to 31 => UNLOCK <= '1'; end case; end process; state_register: -- the state register part (the flipflops) process(clk) begin if rising_edge(clk) then state <= nextstate; end if; end process; end behavior;

[IMAGE] lockmall.vhd

[IMAGE]

Observera att entity i VHDL-filen ska matcha projektets Top Level Entity!

Spara filen med: File, Save As och som VHDL-fil. Namnet kan vara codelock.vhd (eller annat). Add File to current project skall vara förbockat!

Analysis and Synthesis

[IMAGE]

[IMAGE]

När man har nyskriven kod är det onödigt att köra hela verktygskedjan, risken är stor att det kan finnas felaktigheter längs vägen.

Från början kör man bara Analysis & Synthesis.

[IMAGE]

Start Compilation

[IMAGE]

[IMAGE]

Start Compilation kör hela verktygskedjan.

[IMAGE]

Varningarna handlar om "verktyg" som saknas i vår programversion men som vi inte behöver. ( Antalet varningar kan variera lite med programversion, detta är ingen anledning till oro ).