Demo Programm zum Zeichnen von Computergrafik mit dem TerasIC DE1 Demo-Board SW0 auf dem Board schaltet um zwischen funktionaler und gebufferter Grafik: Sourcecode Fred Feuerstein Auto: DE1_Default Sourcecode Auto V.2: DE1_Default_v2 Folgende Bilder zeigen die Phasen der Framebuffer-Linien Programmierung, basierend auf der Geradengleichung.
Author Archives: comptec
Diodengleichung
1. Graphische Lösung mit Octave: octave:1> x=0:10:800 octave:2> y1=(5000-x)/1000 octave:3> y2=1e-12*(exp(x/26)-1) octave:4> plot(x,y1) octave:5> hold on octave:6> plot(x,y2) octave:7> hold off octave:8> x=650:1:770 octave:9> y1=(5000-x)/1000 octave:10> y2=1e-12*(exp(x/26)-1) octave:11> plot(x,y1) octave:12> hold on octave:13> plot(x,y2) 2. Numerische Lösung in Tabellenkalkulation: Diodengleichung_Numerisch.odf 3. Fazit Wir operieren hier in einem exorbitant grossen Zahlenbereich, der jede 32-Bit-CPU überlaufen lässt. […]
PWM
Für ein 16Bit/48kHz PWM wird ein Takt von 2^16*48kHz=3.146 GHz benötigt. Dieser kann noch halbiert werden, da bei der steigenden und fallenden Flanke der PWM-Zähler hochgezählt werden kann. Auf unserem Board DE0-Nano stehen uns lediglich 50 MHz zur Verfügung. Diese können mit der PLL auf ca. 500MHz hochgetaktet werden. Wir müssen also bei der Bitbreite […]
FPGA-Synth
In diesem Projekt versuchen wir, einen Musiksynthesizer auf FPGA zu realisieren. Ein Synthesizer besteht in der Regel aus Oszilatoren, Hüllkurvengeneratoren, Filtern, Modulationsmatrix, einem Mixer und einer Steuerung bzw. einem Sequenzer. Auf mehrstimmigkeit wollen wir vorerst verzichten. Diese Komponenten werden digital simuliert und anschliessend in ein Analogsignal konvertiert (DAC). Damit wir keine zusätzliche Hardware entwickeln müssen, […]
Pipeline
always @(posedge or negedge) if (posedge) Initialisierungsdaten pro pipeline-kanal: reg [2:0] posedge_counter; reg [2:0] negedge_counter; reg program_status1; reg program_status2; reg daten_status1; reg daten_status2; 1. posedge: prefetch – Instruction -> Hilfsregister – PC++ – posedge_counter++ 1. negedge: fetch – kopieren in INSTRUCTION-Register
VHDL Demo1
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity Demo is port ( Clk : in std_logic; ResetN : in std_logic; TasteN1 : in std_logic; Led : out std_logic_vector(7 downto 0) ); end entity; architecture Demo_Arch of Demo is type states is(Reset, LedOnLow, LedOnHigh, LedAllOn); signal state : states; signal TasteN1_old : std_logic; — flipflop — signal […]
FPGA Workshop
S-RAM based 22k Logic Cells Lookup-Table, 16 in, FlopFlop, 1 out Programmierbare Interconnection Points. 2 Programmiermethoden – Struktural, auf Hardwareebene (1980) – Verhaltensbasiert, Funktional (Verilog) Programmiert wird: – Lookup Table – Startwert vom FlipFlop – Interconnection points Seither weiterentwicklung: – RAM (512k) in 9k Blöcken – PLLs, gut, wenig jitter – Hardware Multiplier – keine […]
CPU mit Pipeline
Im Folgenden ein Ansatz für eine CPU mit Pipeline in Verilog. Im beispiel, dass 8 mal inkrementieren sollte, sehen wir schön, dass in einer Pipeline Operationen, deren Argumente von einer vorhergehenden Operation abhängt, nicht dicht aufeinander folgen dürfen. Denn zum Zeitpunkt des ladens der Argumente steht das Resultat nicht zur Verfügung. Daher zählt das vorliegende […]
Experienced / entertaining error messages
Error: Can’t place 363 pins with 2.5 V I/O standard because Fitter has only 322 such free pins available for general purpose I/O placement Error: Can’t fit design in device
Wie verbinde ich Ports mit verschiedenen Breiten?
Error: Width mismatch in port “wraddress[9..0]” of instance “inst1” and type ex3_lpm_ram_dp_0 — source is “”DATA_ADR_WR[15..0]” (ID EX2_CPU_PIPELINE:inst)” Error: Width mismatch in port “rdaddress[9..0]” of instance “inst1” and type ex3_lpm_ram_dp_0 — source is “”DATA_ADR[15..0]” (ID EX2_CPU_PIPELINE:inst)” Antwort: Mit benannten Verbindungen (—X). z.B. DATA_ADR[15..0] |—-X DATA_ADR[15..0] DATA_ADR[9..0] X—-| rdaddress[9..0]