vhdl code:
VGA_HS : out STD_LOGIC;);
VGA_HS : out STD_LOGIC);
[/code=vhdl]
Druk even op quote, kan je zien hoe ik het gedaan heb
Overleden
vhdl code:
VGA_HS : out STD_LOGIC;);
VGA_HS : out STD_LOGIC);
[/code=vhdl]
Druk even op quote, kan je zien hoe ik het gedaan heb
Ja ok, er mistte een = tussen code en vhdl. Dat staat nergens in de help, volgens mij mist er een stuk daar.
Loopt de synthese nu wel goed voor alle files in je project? Het staat me bij dat ISE zelf de files in de juiste hierarchy zet als ie alles geanaliseerd heeft. En als je die optie wel gevonden hebt, waarom kun je dan niets selecteren?
Op 9 april 2016 09:00:49 schreef flipflop:
Loopt de synthese nu wel goed voor alle files in je project? Het staat me bij dat ISE zelf de files in de juiste hierarchy zet als ie alles geanaliseerd heeft. En als je die optie wel gevonden hebt, waarom kun je dan niets selecteren?
Ik gebruik vivado omdat ise geen artix 7 meer ondersteund .En ik heb wel de menu gevonden om het te kunnen veranderen maar geen keuzen om van top file te veranderen. En compileren lukt ook Maar ze staan nog altijd onder die syntak en non modules files
Als er syntax errors zijn, dan compileren ze toch ook niet? Of mis ik iets?
Heb je al gegoogled?
https://forums.xilinx.com/t5/Simulation-and-Verification/Assigned-Top-…
[Bericht gewijzigd door flipflop op zaterdag 9 april 2016 18:41:48 (48%)
Toch zit er nog steeds een syntax error in je Top.vhd file. Misschien "compileert" ie wel goed voor iets, maar niet je Top file lijkt het. Hint: punt-comma.
Je kunt ook nog in de log files kijken wat ie precies doet. Het zal wel te maken hebben met de foute toplevel module.
ps, als je dat toplevel eens uitklapt (die vetgedrukte), wat staat daar dan onder?
[Bericht gewijzigd door flipflop op zaterdag 9 april 2016 19:10:54 (13%)
Als ik mijn top file openkalp staat het volgende er onder: U0-clk_wiz_0_clk_wiz-xilinx
Ondertussen heb ik al 1 vergeten ; gevonden. Aleen is er wel niet verandert aan de situatie buiten dat vga_control nu ook in het mapje Non-module Files staat.
Juist, dan is die nu syntactisch correct, alleen het zit nog nergens onder. Wordt niet gebruikt in je project dus. Syntax errors moet je NERGENS hebben, dus dat is prio 1. Als die top file nu correct is, zou je 'm nu wellicht ook zo kunnen markeren in Vivado.
Anders even googlen, zo uit m'n hoofd ken ik Vivado niet goed genoeg. Geen anderen met Xilinx ervaring hier? Is wel een beetje 2-mans topic zo.
Op 9 april 2016 18:31:00 schreef flipflop:
Als er syntax errors zijn, dan compileren ze toch ook niet? Of mis ik iets?Heb je al gegoogled?
https://forums.xilinx.com/t5/Simulation-and-Verification/Assigned-Top-…
Ik kan die optie niet selecteren:S Maar FlipFlop toch bedankt voor de hulp
Top level selecteren voor synthese doe je door:
- rechtermuisknop op Top.vhd in de project navigator
- set as top
Het compileert nu omdat de clk_wiz_0 file als top level gekozen is.
Top.vhd wordt NIET gesynthetiseerd.
DRC errors komen doordat de top-level poorten niet geconstraint zijn naar fysieke pinnen / IO standard (LVCMOS25 LVCMOS33 etc.)
Ok nu nog een klein vraagje volgens het boek The sdudents guide to vhdl moet ik mijn port mapping zo doen
vhdl code:
entity Top is
Port map ( CLK : in STD_LOGIC;
VGA_RED : out STD_LOGIC_VECTOR (3 downto 0);
VGA_BLUE : out STD_LOGIC_VECTOR (3 downto 0);
VGA_GREEN : out STD_LOGIC_VECTOR (3 downto 0);
VGA_VS : out STD_LOGIC;
VGA_HS : out STD_LOGIC
);
end Top;
klopt dit? want het lijkt me geen verschil te maken of ik nu zoals hier boven doe of zoals hier onder.Trouwens volgens mij moet je in vivado geen port map schrijven(wat ook niet veel uitmaakt heb het met en zonder map geprobeert)
vhdl code:
entity Top is
Port ( CLK : in STD_LOGIC;
VGA_RED : out STD_LOGIC_VECTOR (3 downto 0);
VGA_BLUE : out STD_LOGIC_VECTOR (3 downto 0);
VGA_GREEN : out STD_LOGIC_VECTOR (3 downto 0);
VGA_VS : out STD_LOGIC;
VGA_HS : out STD_LOGIC
);
end Top;
De tweede vorm is correct om in de entity de port definities te doen.
Port map gebruik je bij het instantieren van een component (vga_control in jouw geval)
Op 10 april 2016 16:13:13 schreef DigitalDesigned:
Port map gebruik je bij het instantieren van een component (vga_control in jouw geval)
dus hier zou ik een prot map moeten gebruiken?
vhdl code:
Inst_Vga_control: Vga_control CLK_I => CLK,
VGA_HS_O => VGA_HS,
VGA_VS_O => VGA_VS,
VGA_RED_O => VGA_RED,
VGA_BLUE_O => VGA_BLUE,
VGA_GREEN_O => VGA_GREEN,
);
Ik heb hier totaal geen verstand van (wel van PIC programmatie) dus sorry als ik wat stoms tik, maar als ik dit zo voor de eerste keer lees, hoort die komma achter VGA_GREEN er wel te staan ??
Op deze manier:
vhdl code:
Inst_Vga_control : Vga_control port map (
CLK_I => CLK,
VGA_HS_O => VGA_HS,
VGA_VS_O => VGA_VS,
VGA_RED_O => VGA_RED,
VGA_BLUE_O => VGA_BLUE,
VGA_GREEN_O => VGA_GREEN
);
- na vga_control port map (
- Geen komma na VGA_GREEN
DigitalDesigned het maakt geen verschil uit het staat nog altijd onder de sintax error map. Ik moet er wel bijzeggen dat ik vanuit een werkend voorbeeld ben begonnen.Dat in vivado heeft gewerkt
Op 10 april 2016 17:54:46 schreef Blauw Lampje:
Ik heb hier totaal geen verstand van (wel van PIC programmatie) dus sorry als ik wat stoms tik, maar als ik dit zo voor de eerste keer lees, hoort die komma achter VGA_GREEN er wel te staan ??
Nee, die comma hoort er inderdaad niet. De comma betekent, hierna komt het volgende signaal. Bij de laatste is er geen volgende en dus sluit je gelijk af met een haakje.
TS, je snapt niet helemaal wat je doet met dat port statement. Als je een module definieert, dan definieer je daar ook bij wat z'n in en uitgangen zijn. In dat geval staat er alleen "port" en geen map. "Map" betekent, hoe sluit ik de port aan. Je mapped een input of output aan een signaal. Dat is dus bij instantiatie van een module in een hoger level. Bv in je toplevel instantieer je vga_xx. De laatste heeft een port en die map je op signalen in dat toplevel. Eigenlijk precies zo alsof je een IC aansluit op een printplaat.
oh, nog over de syntaxen: Vivado geeft zeker weten aan wat de errors zijn. Zoek die eerst eens op en los de errors op, anders kom je nooit ergens. Errors wegwerken en liefst warnings ook. Die laatste comma kan nooit gewerkt hebben, da's gewoon geen correct VHDL. VDHL is erg strikt dus ik kan me niet voorstellen dat er een synthesiser is die dat accepteert.
Beetje warrig verhaal zo. Kun je aangeven wat je hebt veranderd waardoor het niet meer werkt?
Gezien ik je hoor praten over de poort map van je top level vraag ik me af of je een poort hebt toegevoegd of verwijderd. Zo ja, heb je dan ook het in/uitgangssignaal toegewezen aan een fysieke pin in de .XDC file?
Op 10 april 2016 21:27:45 schreef Nieko:
Beetje warrig verhaal zo. Kun je aangeven wat je hebt veranderd waardoor het niet meer werkt?
https://reference.digilentinc.com/basys3:gpiodemo van dit project heb ik alles er uitgegooid wat niet met het vga gedeelte te doen heeft )User Switches, User LEDs ,User Push Buttons ,4-digit 7-Segment Display ,USB-UART Bridge ,USB HID Host With Mouse ) heb ik er uitgesmeeten. zodoende dat ik mijn vga aansturing alleen over hou.Dit zodat ik hier later zelf op kan verder bouwen.Dus in die top file heb ik dus alles verwijdert wat niet met die vga te maken had.Eveneens heb ik aan die xdc file niet echt veel verandert .Sorry voor alle verwarring en hoop je hiermee wat wijzer heb gemaakt over mijn probleem.
Het is natuurlijk wel belangrijk dat je de pin assignments in je XDC file die je niet gebruikt in je TOP verwijderd. Anders geeft dat geheid problemen tijdens het mappen/place & routen van het geheel.
Ik heb even op je github link gekeken en de code van Top aangepast naar een werkende versie (gecheckt in vivado 2015.3):
vhdl code:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
--The IEEE.std_logic_unsigned contains definitions that allow
--std_logic_vector types to be used with the + operator to instantiate a
--counter.
use IEEE.std_logic_unsigned.all;
entity Top is
Port ( CLK : in STD_LOGIC;
VGA_RED : out STD_LOGIC_VECTOR (3 downto 0);
VGA_BLUE : out STD_LOGIC_VECTOR (3 downto 0);
VGA_GREEN : out STD_LOGIC_VECTOR (3 downto 0);
VGA_VS : out STD_LOGIC;
VGA_HS : out STD_LOGIC -- Hier geen comma
);
end Top;
architecture Behavioral of Top is
component Vga_control
Port ( CLK_I : in STD_LOGIC;
VGA_HS_O : out STD_LOGIC;
VGA_VS_O : out STD_LOGIC;
VGA_RED_O : out STD_LOGIC_VECTOR (3 downto 0);
VGA_BLUE_O : out STD_LOGIC_VECTOR (3 downto 0);
VGA_GREEN_O : out STD_LOGIC_VECTOR (3 downto 0) -- Hier geen comma
);
end component;
begin -- Dit moet toegevoegd worden tussen de declaraties van signalen components etc. en de echte inhoud
----------------------------------------------------------
------ VGA Control -------
----------------------------------------------------------
Inst_Vga_control: Vga_control port map ( -- Hier "port map (" toegevoegd
CLK_I => CLK,
VGA_HS_O => VGA_HS,
VGA_VS_O => VGA_VS,
VGA_RED_O => VGA_RED,
VGA_BLUE_O => VGA_BLUE,
VGA_GREEN_O => VGA_GREEN -- Hier geen comma
);
end Behavioral;
Ik raad je wel aan om eventueel een tutorial over VHDL te volgen, bijvoorbeeld: http://class.ece.iastate.edu/cpre583/ref/VHDL/shock_awe_vhdl_adobe.pdf
Port assignments voor niet bestaande poorten in de .xdc zorgen alleen voor warnings, dus is niet netjes maar zou wel moeten werken.
Hey hey
eindelijk eens wat goed nieuws:) het werkt zoals het hoort (buiten die xdc fouten dan). zoals DigitalDesigned aanhaalde ben ik gewoon mijn begin statment vergeten schrijven
hartelijk dank aan iedereen die mee heeft gedacht aan deze fouten.
[Bericht gewijzigd door Ben De Lathouwer op maandag 11 april 2016 18:37:29 (61%)
En waardoor werkt het nu wel? Wat zat er fout?
Over die , en ; Als je het zo opschrijft, is de verwarring weg en voelt het (voor mij in elk geval) ook veel duidelijker:
vhdl code:
component Vga_control
Port ( CLK_I : in STD_LOGIC;
VGA_HS_O : out STD_LOGIC;
VGA_VS_O : out STD_LOGIC;
VGA_RED_O : out STD_LOGIC_VECTOR (3 downto 0);
VGA_BLUE_O : out STD_LOGIC_VECTOR (3 downto 0);
VGA_GREEN_O : out STD_LOGIC_VECTOR (3 downto 0) );
end component;
men begin statement te vergeten in men top modulle:)