Lucky Luke
Eluke.nl | handgetypt | I'm a poor, lonesome cowboy, with a long, long way to go.
Beste Mede-CO-ers,
Ik zou graag wat meer VHDL willen kunnen. Ik krijg dat wel op mijn opleiding, maar ik heb nogal wat colleges digitale techniek gemist, dus een beetje zelfstudie kan geen kwaad. (En hé, wie weet valt er nog wat leuks mee te hobbyen)
Om te beginnen een vraagje aan hen die het boek van F_E hebben: valt daar goed VHDL uit te leren? Aangezien free volgens mij toch een voorkeur voor verilog heeft... Ik heb de inhoudsopgave gezien en er zou het e.e.a. over VHDL in moeten staan, maar zou ik er ook wat aan hebben? (De rest van 't boek is waarschijnlijk sowiso leuk, maar 't is toch 50 euro...)
Ik wil liever geen verilog gaan doen, want VHDL moet ik sowiso kennen en daar lukt het als het goed is ook mee.
Verder is veel informatie die ik vind al wat ouder, maar misschien wel bruikbaar?
Is deze tutorial wat?
Of dit boek?
Daarnaast heb ik ook nog een heleboel vragen over het stukje hardware zelf.
Om maar 's wat af te vuren:
Hoeveel "ruimte" (LE's, macrocells) heb je nodig om een beetje te hobbyen?
Wat is het verschil tussen een LE of een macrocell?
In het topic van foto-opa staan namelijk een flink aantal voorbeelden, maar daar staat bij hoeveel LE's ze innemen. Als ik nu bijvoorbeeld de XC9572XL zou willen gebruiken staat er in de datasheet: 72macrocells, 1600 usable gates. hoeveel zijn er dan unusable?. Hoeveel LE's is dat?
(waarom de XC9572XL? Dick Best verkoopt 'm, en iemand had/heeft een demoprintje ervoor te koop staan bij V&A waar ik een beetje over aan het dubben ben dat al dan niet aan te schaffen).
Volgende vraag dus:
Zou ik wat kunnen met de XC9572XL?
Passen foto-opa's voorbeelden daarin, of de dingen uit free's boek?
Of een frequentieteller? logic analyser? (en hoe snel gaan die laatste 2 dan kunnen zijn?)
Verder vraag ik me af wie er nog meer FPGA/CPLD verkoopt in Nederland behalve de XC9572XL van Dick best.
Op mijn opleiding gebruiken we Altera, al leren we niet echt om te gaan met quartus, we gebruiken HDL designer en gebruiken quartus alleen voor het compilen en de timing analyse. Simuleren is ook laad de do file en go. Simuleren zou ik dus ook wel graag willen leren, want hardware heb ik voorlopig nog niet (en de demoboards die ik tot nu toe gezien heb zijn toch vrij prijzig)
Bart Hiddink
Bart Hiddink is Ideetron; electronics and projects, http://www.ideetron.nl. LoRaWAN Nutcase.
Begin met VHDL en Quartus en een demoboard met een MAX II.
Leuk om mee te beginnen.
Vergeet die complexe projecten nog even, da's leuk voor later.
Pm me even als je een boekje over VHDL wilt in PDF.
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
Voor FPGA/CPLD borden is digilent een heel goede in.
http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,789&P…
http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,790&P…
De XC9572XL is een heel kleine CPLD. 1.6Kgates -> 250Kgates van een fpga. Die 1600 zijn vlug op.
Lucky Luke
Eluke.nl | handgetypt | I'm a poor, lonesome cowboy, with a long, long way to go.
't is lang geleden maar ik ben hiermee doorgegaan.
CPLD bordje van riktw, met altera EPM3064 -10. (En usbblasterkloon via riktw)
Ben nu wat aan het spelen geweest met quartus en modelsim. Vechtend door een woud van errors veel bijgeleerd en uiteindelijk de volgende multiplier gemaakt en gesimuleerd:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;
ENTITY multiplier IS
PORT
(
start : IN STD_LOGIC;
a : IN STD_LOGIC_VECTOR(3 downto 0);
b : IN STD_LOGIC_VECTOR(3 downto 0);
clk : IN STD_LOGIC;
rst : IN STD_LOGIC;
done : OUT STD_LOGIC;
y : OUT STD_LOGIC_VECTOR(7 downto 0)
);
END Multiplier;
ARCHITECTURE multiplier_architecture OF multiplier IS
BEGIN
PROCESS(clk,rst)
variable result : unsigned (7 downto 0);
variable a_tel : unsigned (3 downto 0);
variable b_reg : std_logic_vector(3 downto 0);
BEGIN
if rst = '1' then
y<=(others=>'0');
done<='0';
elsif rising_edge(clk) then
if start='0' then
if a_tel = 0 then
y <= std_logic_vector(result);
done<='1';
else
a_tel := a_tel - to_unsigned(1,3);
result := result + unsigned(b_reg);
end if;
else
a_tel := unsigned(a);
b_reg := b;
result := to_unsigned(0,8);
done<='0';
end if;
end if;
END PROCESS;
END multiplier_architecture;Maar dat moet toch veel handiger kunnen dan al dat omzetten van std_logic naar unsigned etc?
Hij gebruikt 34LE's. De door de megafunctionwizzard gecreëerde multiplier gebruikt 45LE's maar werkt wel in 1 kloktik. (beiden 4 bits).
Heb 'm gesimuleerd met modelsim. Was ook even prutsen om uit te zoeken hoe dat werkt. Eerst design laden via view->libary en 'm dan uit work pakken. Daarna iets van een do file in elkaar proberen te zetten... Anyway, hij doet het wel, al is alleen een multiplier te nutteloos om echt op die cpld te laden... Mijn rekenmachine kan ook vermenigvuldigen, en beter.
EDIT: A, juist. In/uitgangen kunnen ook unsigned zijn ipv std_logic_vector... Dan hoef ik niet om te zetten.