-
Thread
Befehl für keine Signalzuweisung
zu. In den anderen Cases wird diese Variable nicht verändert. case state is when a => variable_a <= "0001"; when b => variable_a <= variable_a; when others => variable_a <= variable_a; end case; Also ich suche nach etwas wie : variable_a <= null; Also was vom
Formale richtig wäre z.B.: [vhdl] case state is when a => variable_a <= "0001"; when b => null; when others => null; end case; [/vhdl] Das "null" braucht man, damit irgendetwas in der Zeile steht.
-
Thread
CPLD - I/O Erweiterung
); elsif (A(5 downto 3)="010") then addr_mux2 <= D(2 downto 0); end process; D <= (others => 'Z') when OE='1' else -- hochohmig, wenn nicht gelesen werden soll PA when (A="000000") else PB when (A="000001") else PC when (A="000010") else PD when (A="000011") else (others => '0'); : [/vhdl] EDIT: Stephan M. schrieb im Beitrag #2122085: > Dadurch kann ich beginnen das Layout zu planen > und die Programmierung später angehen. Leg das WR-Signal auf einen Takteingang
-
Thread
Einfacher Bus Multiplexer
i in 0 to (g_memory_map'length - 1) generate ... x_wb_master_o.dat <= x_wb_slave_array_i(i).dat when s_cs_vector(i) = '1' else (others => 'Z'); ... end generate; [/vhdl] Funktioniert in der Simu super, aber ich mag kein 'Z' für Sachen, die im FPGA laufen. Alternativ habe ich mir das überlegt:
... x_wb_master(i) <= x_wb_slave_array_i(i).dat when s_cs_vector(i) = '1' else (others => '0'); ... end generate; x_wb_master_o.dat <= x_wb_master(0) or x_wb_master(1) or .. [/vhdl] Hat natürlich das gleiche fiese Verhalten wie der Z-Bus. Wenn
-
Thread
Probleme mit Signalgenerator
clk : in std_logic; -- Systemclock (50 MHz) microsteps : in unsigned(31 downto 0) := (others => '0'); -- Anzahl der Schritte, in die die Wellenform unterteilt wird cnt_check : in unsigned(31 downto 0) := (others => '0'); run : in unsigned(31 downto 0) := (others =>
unsigned(31 downto 0) := (others => '0'); -- Regelung: 0 = nein, 1 = ja rechteck : out std_logic_vector(15 downto 0) := (others => '0'); saegezahn : out std_logic_vector(15 downto 0) := (others => '0');
-
Thread
Fehler in der Übertragung
process begin wait until falling_edge(main_clk); case FSM1 is when idle => if (dummy=15) then FSM1 <= Data0; intdb0 <= intdb0 + '1'; end if; wrreq <= '0'; when Data0 => FSM1 <= Data1; intdb0 <= intdb0 + '1'; DCFIFO <= intdb0; wrreq <= '1'; when Data1 => FSM1 <= idle; DCFIFO <= intdb0; wrreq <= '1'; when others => null; end case; end process; [/vhdl] Bzgl deiner vermutung hatte ich auch schon die
-
Thread
Bedingte Zuweisung in Port Map
der Port Map hinkriegen. Probiert habe ich sowas wie [vhdl]A: Addierer port map(AV(i),BV(i),'0' when i=0 else CV(i),ErgebnisV(i),CV(i+1));[/vhdl] in verschiedenen Varianten. Das scheint nicht zu funktionieren. Beim when wird immer ein Fehler angezeigt. [Natürlich geht es über loop 1 to Breite-1
> [vhdl]A: Addierer port map(AV(i),BV(i),'0' when i=0 else > CV(i),ErgebnisV(i),CV(i+1));[/vhdl] verständlichere Signalnamen als AV, BV und CV sind sinnvoller als jede elegant anmutende Syntaxverrenkung. SCNR,
-
Thread
Toggle FF
FF_INPUT: std_logic; begin KOMB: process(DATA_IN, NRZI_INT) begin case DATA_IN is when '1' => FF_INPUT <= NRZI_INT; when others => FF_INPUT <= DATA_IN xnor NRZI_INT; end case; end process KOMB; DFF: process (CLK, DATA_IN) begin if CLK'event and CLK = '1' then NRZI_INT
Mir kommt diese Zeile sehr komisch vor: when others => FF_INPUT <= DATA_IN xnor NRZI_INT; probier lieber mal: when others => FF_INPUT <= not NRZI_INT; Viele Grüße TobiFlex
-
Thread
Tasteneingabe mittels Erweiterungsboard?!
state, toest, seg3, seg2, seg1, seg0) begin -- process Multiplexer case state is when "100" => iobus_b <= leds; when "010" => iobus_b <= seg3; when "110" => iobus_b <= seg2; when "001" => iobus_b <= seg1; when "101" => iobus_b <= seg0; when others => iobus_b <= (others => 'Z'); end case; end process Multiplexer; -- purpose: FlipFlop for the buttons -- type : sequential -- inputs : precount, reset_n -- outputs: buttons buttons_FF: process
-
Thread
SRAM - wieso bekomm ich warnungen ?
sram 1 oder sram 2 sram_1_io <= write_dat_1; -- Daten schreiben sram_2_io <= (others => 'Z'); else sram_1_ce <= '1'; -- Sram 2 sram_2_ce <= '0'; sram_1_io <= (others => 'Z');-- Daten schreiben sram_2_io <= write_dat_1; end
sram_2_ce <= '0'; end if; end if; end process; sram_1_io <= write_dat_1 when (write_sel_1='0' and write_wrt_1='1') else (others => 'Z'); sram_1_io <= write_dat_1 when (write_sel_1='1' and write_wrt_1='1') else (others => 'Z'); [/vhdl] BTW: >-- IO auf Treestate
-
Thread
LSC Smart Connect - neues Smart Home System bei Action
GPIO0, GPIO2 and GPIO15. I didn’t add any resistors but I had to pull GPIO15 low (as I did before when flashing. Best Jan
wires them self's are rated for 300V as written in the wire itself. But they do touch each other when leaving the white box.
-
Thread
Merkwürdiges Verhalten mit diesem VHDL-Programm.
terminal_count <= '1'; count <= (others => '0'); else terminal_count <= '0'; end if; end process; process begin wait until rising_edge(clk); if terminal_count = '1' then case state is when "01" => state <= "10"; when "10" => state <= "01"; when others => state <= "01"; end case
-
Thread
String in std_logic_vector umwandeln
[vhdl] signal test_byte : STD_LOGIC_VECTOR(7 downto 0) := (others => '0'); : test_byte <= constant_bytes'pos(x"A9"); [/vhdl] Das geht sowieso nicht, weil 'pos einen Integer zurückliefert. Und zudem ist 'pos nicht auf solche zusammengesetzten Arrays anwendbar
Auswahlelement verwenden: [vhdl] if oneofmyfamily=mum then ... case oneofmyfamily is when mum => ... when dad => ... when others => ... end case; [/vhdl] > Das sieht fast so aus wie wenn man ein Enum deklariert: Das ist es eigentlich auch, allerdings sind hier bei VHDL
-
Thread
warning beim Implementieren einer State Machine
folgezustand <= a_SENDWERT_Z2; -- im Zustand z2 bleiben end if; when others => folgezustand <= zustand; -- zustand nicht verändern end case; end process ue_sn; TxData <= counter; TxPulse <= txflag; end Behavioral
clk) then zustand <= folgezustand; case folgezustand is -- BITTE BEACHTEN when a_SENDWERT_Z1 => counter <= counter +1 ; txflag <= '0'; when a_SENDWERT_Z2 => txflag <='1'; when others => null end
-
Thread
VHDL ERROR 10028
then var_e <= (var_e +1); end if; state <= ST_B; when others => null; end case; end if; end process H_Counter; V_Counter: process(RESET_n,CLK) -- ______________________ ________ -- ________| VIDEO
var_s <= (var_s +1); end if; state <= ST_P; when others => null; end case; end if; end process V_Counter; end rtl; [/vhdl] Ich bekomme folgenden Fehler: VHDL Error (10028): Can't resolve multiple constant drivers for net "state.ST_B
-
Thread
Frage zu fifo
Pointer. Der läuft kostenlos über: [vhdl] signal wrcnt : unsigned (Addrbreite-1 downto 0) := (others => '0'); signal rdcnt : unsigned (Addrbreite-1 downto 0) := (others => '0'); type speicher is array(0 to (2**Addrbreite)-1) of unsigned(Wortbreite-1 downto 0); signal memory : speicher;
; -- Adresse getaktet --> BRAM rdcnt <= rdcnt+1; end if; end process; Full <= '1' when rdcnt = wrcnt+1 else '0'; Empty <= '1' when rdcnt = wrcnt else '0'; end Behavioral; [/vhdl]
-
Thread
Sinus über DDS erzeugen
signal Result : std_logic_vector (7 downto 0); signal Accum : unsigned (20 downto 0) := (others=>'0'); alias Address : unsigned (5 downto 0) is Accum(Accum'high-2 downto Accum'high-7); alias Sign : std_logic is Accum(Accum'high); -- MSB alias Quadrant : std_logic is Accum(
Inputs signal clk : std_logic := '0'; signal Freq_Data : std_logic_vector(7 downto 0) := (others => '0'); --Outputs signal Dout : std_logic_vector(7 downto 0); -- Clock period definitions constant clk_period : time := 10 ns; BEGIN -- Instantiate the Unit Under Test
-
Thread
range Angabe innerhalb von case auch als hexadezimale Zahl möglich?
vom Standard unterstützt: [vhdl] case to_integer(unsigned(stdlogicvector(19 downto 0))) is when 0 to 4096 => -- ... -- ... when 4097 to ... => -- ... -- ... when others =>
hexadezimale Zahlen darzustellen. So z.B.: [vhdl] case unsigned(stdlogicvector(19 downto 0)) is when x"0" to x"1000" => -- ... -- ... when others => -- ... end case; [/vhdl] Ist sowas möglich? Vielen Dank im Voraus. zwiepack
-
Thread
Altera & ModelSim
MUX4X1; architecture VERHALTEN of MUX4X1 is begin with S select -- Auswahlsignal Y <= E(0) when "00", E(1) when "01", E(2) when "10", E(3) when "11"; end VERHALTEN;
Y : out std_logic); end MUX4X1; architecture VERHALTEN of MUX4X1 is begin Y <= E(0) when s = "00" else E(1) when s = "01" else E(2) when s = "10" else E(3) when s = "11"; end VERHALTEN; Ich habe es nur kompiliert und nicht simuliert. Tom
-
Thread
Ein- oder Zwei-Prozess-Darstellung für FSM
process (state, rst, start, stop, delay, counter) begin next_counter <= (others=>'0'); case state is when reset => next_state <= idle; when idle => if (start='1') then next_state <= work;
2. begin process begin wait until rising_edge(clk); case state is when reset => counter <= (others=>'0'); state <= idle; when idle => delay <= 0; if (start='1') then
-
Thread
Problem mit CASE Anweisung
Ich habe folgenden Code, der einen Fehler produziert, wenn ich "others" weglasse. Warum ist das so? [c] CASE counter(3 downto 0) IS WHEN "0000" => output <= out01; select <= sel01; WHEN "0001" => output <= out02; select <= sel02; (weitere cases
Woher kommt diese Zahl und warum wird das angemahnt? Es gibt doch keine "others", denn der selektierende Vektor ist wirklich nur ein "3 downto 0" Idee ?
-
Thread
Sortieranlage vhdl metall und kunststoff
counter, overflow = 1s if cnt = to_unsigned(CNT_OFL, cnt'length) or main_state = idle then cnt <= (others => '0'); else cnt <= cnt + 1; end if; -- Sekunden timer if main_state = idle then -- reset timer time_s <= (others => '0'); elsif cnt = CNT_OFL then time_s <= time_s + 1; end if; case main_state is when idle => -- warte auf opt_sens hi ERGÄNZE when ……. => ERGÄNZE when ……. => ERGÄNZE when ……. => ERGÄNZE when ……. => ERGÄNZE when ……. => ERGÄNZE
-
Thread
Verständniss Signale und wann sind ihre Werte valide
waitCounter : integer range 0 to 50000000 := 50000000; signal signala : std_logic_vector(7 downto 0) := (others => '0'); signal signalb : integer range 0 to 256 := 0; begin process begin wait until rising_edge(clock); case state is when idle => signala <= (others => '0'); signalb <= 1; leds <= (others => '0'); if (btn = '0') then state <= run; end if; when run => if (signalb < 8) then signala <= std_logic_vector(to_unsigned(signalb
-
Thread
Ist Windows 10 wirklich so Lahm?
when you get an issue with you website. dont' be worry about it just contact see our site which [https://globalcool.org/how-to-create-a-wordpress-website/] wordpress websiteprovide the solution related to
When you get some Kind of wirres Zeug, then put this into the Eimer and put the Deckel druff.
-
Thread
Signal übergabe geht nicht
aller Werte -- --------------------------------------------------------------- when reset_state => tra_state<= ramReadH; zeilen_reg <= "00000001"; ramRD <='0'; modulcounter<=0; ramADR<= (others
-- ModulInc -- --------------------------------------------------------------- when modulinc_state => null; when others => null; end case; end if; end process; PIN_RAMADR <= ramADR; PIN_RAMRD <= ramRD; PIN_ZeilenCLKOUT
-
Thread
Konfigurierbarer Zähler/Timer
then clk <= '0'; counter <= (others =>'0'); end if; end process; ...... Nun habe ich bereits diverse Möglichkeite nausprobiert andere Periodendauern einstellen zu können: - den Counter nicht mit Konstanten vergleichen, sondern
<= counter+1; end if; end if; end process; clkout <= counter(0) when sel = "11" -- 2Hz else counter(1) when sel = "10" -- 1Hz else counter(2) when sel = "01" -- 1/2Hz else '0'; -- Ausgeschaltet [/vhdl] > Beide Möglichkeiten
-
Thread
Daten in flash speichern und abrufen?
; when others=>ADD<=ADD; CE <='1'; OE <='1'; DA <=DA; end case; end process FLASH; -------------------------------------------------- DATAOUT
CE <= '1'; OE <= '1'; RP <= '1'; when others => ADD_ENABLE <= '0'; DATA_ENABLE <= '0'; CE <= '1'; OE <= '1'; RP <= '1'; end case; end process TEST
-
Thread
Debounce-Entity und Architecture in Zusammenhang mit Sate-Machine nutzen
<= Tasteneingabe; end if; when others => LED(3) <= '1'; end case; end if; end process; end architecture;[/vhdl]
gedrückter Taste ständig zwischen den Zuständen hin- und herspringt. Noch ein Wort zum überflüssigen "when others", das dir der Synthesizer sicher als "nicht erreichbar" vor den Latz knallt: http://www.lothar-miller.de/s9y/categories/25-when-others Duke Scarring schrieb im Beitrag #6242973: > Bitte
-
Thread
Problem mit GENERATE
(srlen downto 0) := (others=>'0'); : sr <= sr(srlen -1 downto 0) & ser_in when rising_edge(clk); ser_out <= sr(srlen ); [/vhdl] Oder generisch mit Attributen, dann wird die Registerlänge über eine Änderung der Zahl
eingestellt (das gefällt mir am besten): [vhdl] signal sr : std_logic_vector (999 downto 0) := (others=>'0'); : sr <= sr(sr'left-1 downto 0) & ser_in when rising_edge(clk); ser_out <= sr(sr'left); [/vhdl] Oder, oder, oder...
-
Thread
"path delay" minimieren
if-else-konstrukten jede einzelne auf wahrheit überprüft wird ... bei case wird nur das zutreffende when ausgeführt! schade ... trotzdem danke für die antwort
es noch mehr solcher weisheiten gibt :) Ja, da wäre z.B. die unnötige generelle Verwendung von /when others/ : http://www.lothar-miller.de/s9y/archives/30-when-others.html Dann das "Gespenst der Metastabilität" (Zitat frei nach Peter Alfke): http://www.lothar-miller.de/s9y/archives/62-Testaufbau-Metastabilitaet.html
-
Thread
Case konstrukt
würde nicht gehen. Vll hab jemand von Euch ja noch eine Lösung case DATA_IN_SIG is when (MAX_SIG < DATA_IN_SIG) => MAX_SIG <= DATA_IN_SIG; MAX_VAL <= DATA_IN; when (MIN_SIG > DATA_IN_SIG) => MIN_SIG <= DATA_IN_SIG; MIN_VAL <= DATA_IN; when others => UR_VAL
MIN_VAL <= DATA_IN; -- -- when others => -- CUR_VAL <= DATA_IN; -- -- end case; end process; end Behavioral; den case hab ich ma auskommentiert. Die IF abfrage funzt
-
Thread
LVDS Clock at Artix7?.
INSTHEADER: std_logic_vector(15 downto 0):=x"602C"; signal SENDREG: std_logic_vector(0 to 16+8*6*4-1):=(others => '0'); signal counter: unsigned(10 downto 0):=(others => '0'); signal waitcounter: unsigned(19 downto 0):=(others => '0'); signal adr: integer range 0 to 207:=0; begin nRESET <= '1'; nSYNC
end process; adr <= to_integer(counter(10 downto 3)); SDIO <= SENDREG(adr); SCLK <= counter(2) when counter < 1663 else '1'; nCS <= '0' when s_control = s_send_conf else '1'; end Behavioral;[/vhdl] clk: in std_logic; that is a 100 MHz Clock in the FPGA start: in std_logic; is a start signal
-
Thread
Fragen zu ersten VHDL Beschreibung (UART Transmitter)
nicht mehr nötig, weil die FSM ja schon aus dem Idle heraus das Startbit ausgeben kann. Und das "when others" kann ich weglassen, wenn sowieso alle Zustände der FSM auscodiert sind: http://www.lothar-miller.de/s9y/categories/25-when-others BTW: es ist nicht verboten, sich den Quellcode von anderen
schon aus dem Idle heraus das Startbit > ausgeben kann. Stimmt, so ist es kompakter. > Und das "when others" kann ich weglassen, wenn sowieso alle Zustände der > FSM auscodiert sind: Hm, das habe ich jetzt sogar als "Information" des Synthesizers entdeckt. :)
-
Thread
'x' einem std_logic_vector zuweisen
habe hier diese anweisung: [vhdl] with ram_sw select add_b <= std_logic_vector(wr_adr_b) when '1' , std_logic_vector(rd_adr_b) when '0', 'xxxxx' when others; [/vhdl] leider kann ich hier ja keinen unbestimmten wert einem std_logic_vector zuweisen. wenn ich es weglasse ist es ja nicht falsch
simulation tut dann nicht. wenn ich z.b. ein std_logic typ habe dann kann ich da einfach ein < ...,'x' when others > dahinter setzen, nur wie mache ich das bei vector types? mfg Andi
-
Thread
Zähler
std_logic_vector (3 downto 0); begin process(CLK, RES) begin if RES = '1' then QINT <= (others => '0'); elsif CLK'event and CLK = '1' then case QINT is when "0000" => QINT <= "0011" ; when "0011" => QINT <= "0101" ; when "0101" => QINT <= "0110" ; -- when "...." => QINT <= "...." ; when others => QINT <= "0000"; --when others => null; end case; end if; end process; Q <= QINT; end verhalten; [/VHDL] MfG Holger
-
Thread
std_logic_vector Array in vhdl
sig_DVAL : std_logic := '0'; SIGNAL sig_RED : std_logic_vector(7 downto 0) := (others => '0'); SIGNAL sig_GREEN : std_logic_vector(7 downto 0) := (others => '0'); SIGNAL sig_BLUE : std_logic_vector(7 downto 0) := (others => '0'); SIGNAL sig_RGB : std_logic_vector(23 downto 0) := (others => '0'); SIGNAL sig_NULL : std_logic_vector(1 downto 0) := (others => '0'); SIGNAL sig_DataPixelValue : std_logic_vector(31 downto 0) := (others => '0'); --End of my Signals
-
Thread
SPI mit 12 Bit A/D Wandler
Mikrocontrollers (übrigens ich verwende den AtMega16) steht folgendes: • Bit 7 – SPIF: SPI Interrupt Flag When a serial transfer is complete, the SPIF Flag is set. An interrupt is generated if SPIE in SPCR is set and global interrupts are enabled. If SS is an input and is driven low when the SPI is in Master mode, this will also set the SPIF Flag. SPIF is cleared by hardware when executing the corresponding interrupt handling vector. Alternatively, the SPIF bit is cleared by first reading the SPI Status Register with SPIF set, then accessing the SPI Data Register (SPDR).
-
Thread
ISE Testbench Impulsgenerator
zeigt er die richtigen Werte für den Vektor E an, jedoch sind die des Ausgangsvektors die Werte der when others (< when others => A <= x"E"; >) Zuweisung. Für einen Tipp wäre ich sehr Dankbar... Grüße dominic
es keinen der werte, die in der state machine abgefragt werden. deswegen springt sie immer in den OTHERS-Zweig. bei in die entity mal dein eingang mit ein und verbinde alles, dann könnte vielleicht auch was passieren. ;)
-
Thread
Wittig(welec) DSO W20xxA Open Source Firmware (Teil5)
longer important. The limiting factor is the internal RAM size. Some modes need more RAM space as others. So you can choose for some modes 32Kbyte buffer size. 김사백 schrieb im Beitrag #3863563: > So when it using 1000s/div in USTB how much is the maximum time it is > possible to browse the memorized
with some ranges of time base. Then, being dreaming I would suggest some things already asked by others in the past: 1) Maybe simple to do, put a warning on the screen in order to signaling when persistence is on. 2) Maybe hard to do, allow for uncalibrated VOLTS/DIV knob in order to fine scale
-
Thread
SPI in VHDL, unerklärliches Verhalten
:= delay_counter0 + 1; end if; when others => end case; end if; end process; [/vhdl] Ich habe noch nicht ganz begriffen, wie genau die SPI-Schnittstelle des MCP3008 arbeitet, insbesondere, weil es anscheinend einen
else delay_counter0 := delay_counter0 + 1; end if; when others => end case; end if; end process; [/vhdl]
-
Thread
Grundlegendes Problem oder nur Stilfrage?
Defaultzuweisung vor dem case. Das machte bei mir bisher keine Probleme. Ich vermisse aber in deiner SM ein "when others". Außerdem wird in deinem Reset kein Reset-State definiert.. was aber eigentlich egal ist (irgendeiner wirds schon sein). Probieren kannst du auch noch das Encoding der SM einzustellen bei
hatte die Statemachine nur so grob skizziert, um die Frage zu erklären. Natürlich hat meine noch ein "when others" und ein reset-state gibt es auch. Ich habe auch mittlerweile den Fehler gefunden: Die Fifo Statemachines sind ok. Was den Fehler macht ist die Statemachine, die die Daten vom Fifo liest und
-
Thread
Einfaches Register mit AXI Interface
S_AXI_WREADY <= '0'; S_AXI_AWREADY <= '0'; state <= addr_wait; address <= (others=>'0'); write_enable <= '0'; else case state is when addr_wait => -- wait for a read or write address and latch it in if S_AXI_ARVALID =
std_logic_vector(3 downto 0) := (others => '0'); signal S_AXI_BREADY : std_logic := '0'; signal S_AXI_ARADDR : std_logic_vector(31 downto 0) := (others => '0'); signal S_AXI_ARVALID : std_logic := '0'; signal S_AXI_RREADY
-
Thread
AX8 - PINB - Multi-source-Error (Spartan 3E/VHDL)
when others => --ignorieren end case; tmp_adr <= x"00"; else tmp_adr <= MyPortA; end if; end
so wird Kombinatorik erzeugt if MyPortA = x"00" then case tmp_adr is when x"00" => -- belegt ;-) when x"01" => LED <= MyPortC; when x"02" => MyPortB <= "0000000" & SW(0); when others => --ignorieren
-
Thread
Xilinxs Fehlermeldung CPLD
port_value <= Eingang2; end if; //Multiplexer end if; end process; PORTXXX <= port_value when (port_oe = '1') else (others => 'Z'); //Buffer [/code] Ich habe mir wirklich keine Gedanken darüber gemacht, wie das letztendlich in Hardware aussieht. Auf jeden fall noch mal Danke, ich habe
port_value <= Eingang2; end if; end process; -- Port hochohmig bei Fehler PORTXXX <= port_value when (error1 = '0' and error2 = '0') else (others => 'Z'); // Buffer [/vhdl] > Zum asynchronen Reset. Ich habe mich hier an einem Code Template von > Xilinxs orientiert. Und auch die meisten Bücher
-
Thread
Datenaustausch Entity und NIOS II
as_write = '1' then -- Schreiben von Registern case as_address is when x"00" => bla lba when others => null; end case; end if; end if; end behave in NIOS hast Du dann IOWR_32DIRECT(BASE, adresse, value) und IORD_32DIRECT(BASE, adresse
Ja, x"00" ist die interne Registeradresse case as_address is when x"00" => mein_register0 <= as_writedata; when x"01" => mein_register1 <= as_writedata; ... when others => null; end case; Danach erstellst Du einfach eine Komponente
-
Thread
Probleme mit Statemachine
=> cyc_o <= '1'; stb_o <= '1'; we_o <= '1'; when S_FINITE => done <= '1'; when others => null; end case; end process; process (state,cmd,ack_i) begin next_state <= state; case state is when
end if; when S_FINITE => next_state <= S_IDLE; when others => next_state <= S_FINITE; end case; end process; end Behavioral; [/vhdl]
-
Thread
Braucht ein CPLD einen schnellen Takt?
when 5 => leds <= "0000100000"; when 4 => leds <= "0000010000"; when 3 => leds <= "0000001000"; when 2 => leds <= "0000000100"; when 1 => leds <= "0000000010"; when 0 => leds <= "0000000001"; when others=>leds <= "0101010101"; end case; end process; end Behavioral; [/vhdl] Nun habe ich wieder 2 Fragen: 1. -- Signal konvertieren
-
Thread
"expecting End" - Fehler in Modelsim
' after 20 ns; when others => A <= '00' after 20 ns; end case; end process AUS_SN; end SEQUENZ; [/vhdl] Und hier die Fehlermeldung: vcom -work work -2002 -explicit -stats=none C:/Modeltech_pe_edu_10.4/examples
Anführungszeichen (") ausgedrückt. Vgl. Zeile 79, 80 - Im Kombinatorischen Schaltnetz "UE_SN" fehlt ein "when others" Viele Grüße
-
Thread
Datenabtastung und Case-Problem
[vhdl] process(CLK,datain,clockin) -- CLK: CPLD-Clock zum Abtasten: begin case switch is when "00" => --BUFFER dataout <= datain; clockout <= clockin; when "01" => --SCRAMBLER if(rising_edge(CLK)) then ... when others => --DESCRAMBLER if(rising_edge(CLK))
process(datain, clockin, switch) -- CLK: CPLD-Clock zum Abtasten: begin case switch is when "00" => --BUFFER dataout <= datain; clockout <= clockin; when "01" => --SCRAMBLER dataout <= scramberl_out; clockout <= clockin; when others => --DESCRAMBLER
-
Thread
Wo ist hier zb die sogenannte Verdrahtung im VHD-Programm?
terminal_count <= '1'; count <= (others => '0'); else terminal_count <= '0'; end if; end process; process begin wait until rising_edge(clk); if terminal_count = '1' then case state is when "01" => state <= "10"; when "10" => state <= "01"; when others => state <= "01"; end case
-
Thread
I2C Master bekommt kein ACK
else FPGA_I2C_SDAT<=data_out(data_index); fsm_spi<=ack3; end if; when ack3=> LEDR(9 downto 6)<="1001"; FPGA_I2C_SDAT<='Z'; if(FPGA_I2C_SDAT='0')then fsm_spi<= stop; end if; when sby => LEDR(9 downto 6)<="0001
FPGA_I2C_SDAT<='1'; fsm_spi<=sby; spi_clk_en<='0'; when others=>NULL; end case; end if; end process; process(clk_SPI) begin if rising_edge(clk_SPI) and single_shot='1' then single_shot<='0'; if (KEY(0)='0' ) then ----wake up