-
Thread
Cyclone II Stromverbrauch steigt drastisch an
end ioport; architecture rtl of ioport is signal dd_reg : std_logic_vector(7 downto 0) := (others => '0'); signal out_reg : std_logic_vector(7 downto 0) := (others => '0'); begin portA(0) <= out_reg(0) when (dd_reg(0) = '1') else 'Z'; portA(1) <= out_reg(1) when (dd_reg(1) = '1') else
portA(4) <= out_reg(4) when (dd_reg(4) = '1') else 'Z'; portA(5) <= out_reg(5) when (dd_reg(5) = '1') else 'Z'; portA(6) <= out_reg(6) when (dd_reg(6) = '1') else 'Z'; portA(7) <= out_reg(7) when (dd_reg(7) = '1') else 'Z';
-
Thread
Abschließen der Schleife trotz Interrupt!
not Schalter ='1' loop case counter(25 downto 24) is when "00" => led_intern <= "000100"; when "01" => led_intern <= "000110"; when "10" => led_intern <= "000111"; when others => led_intern <= "000000"; end case; end loop;
counter(25 downto 24) is when "00" => led_intern <= "000100"; when "01" => led_intern <= "000110"; when "10" => led_intern <= "000111"; when others => led_intern <= "000000"; end case; end if; end process
-
Thread
constant value of 0 in block <.>. This FF/Latch will be trimmed during the optimization process
gpmc_ad_io <= data_i when ((csn(3) = '0') and (len = '1') and (oen = '0') and (wen = '1')) else (others => 'Z'); addr_o <= gpmc_ad_io when ((csn(3) = '0') and (len = '0') and (oen = '1') and (wen = '1')) else (others => '0'); data_o <= gpmc_ad_io when ((csn(3) = '0') and (len = '1') and (oen = '1') and (wen = '0')) else (others => '0'); we_o <= not wen; oe_o <= not oen; end rtl; [/vhdl]
-
Thread
VHDL: Kombinatorische Schaltung oder Multiplexer
"7" when "1000" => segments <= "10000000"; -- "8" when "1001" => segments <= "10010000"; -- "9" when others => segments <= "11111111"; -- "Error" end case; end process showSegments
_5 when 5, DIGIT_6 when 6, DIGIT_7 when 7, DIGIT_8 when 8, DIGIT_9 when 9, ALL_OFF when others; end architecture rtl; [/vhdl] Außerdem versuche ich im Design alle Signale
-
Thread
ADC Daten zwischenspeichern
next_state <= IDLE; when others => next_state <= IDLE; end case; end process; process(clk50) begin if clk50'event and clk50 ='1' then state <= next_state; end if; end process
:= index2 -1; sample <='1'; else sample <='0'; end if; when FINE => counter <= 0; sample <='0'; SCK <= '0'; CONV <= '0'; when others => SCK <= '0'; CONV <= '0'; end case; end if; end process; end
-
Thread
Ausgabe an LED's
table wie folge: process(entre) begin if CLKL'event and CLKL = '1' then case entre is when "000" => entredeux <= "100000";--32 when "001" => entredeux <= "110111";--55 when "010" => entredeux <= "111111";--64 when "011" => entredeux <= "110111";--55 when "100" => entredeux <= "100000";--32 when "101" => entredeux <= "001001";--9 when "110" => entredeux <= "000000";--0 when "111" => entredeux <= "001001";--9 when others => entredeux <= "100000";--32 end case; pinout <= entredeux
-
Thread
VHDL Funktion (kein) Return-Wert
variable tmp : std_logic_vector(3 downto 0); begin tmp := a & b; case tmp is when "0000" => return "00"; when "0001" => return "01"; when "0010" => return "10"; when "0100" => return "01"; when "0101" => return "10"; when "0110" => return "00"; when "1000" => return "10"; when "1001" => return "00"; when "1010" => return "01"; when others => end case; end; [/vhdl] Was passiert denn dann eigentlich? Kein
-
Thread
Frage Case-When-Anweisung
ich weiß auch nicht so recht, wie ich das ohne Hardware ausprobieren soll. Es geht um die case-when-Anweisung, in meinem Fall: [vhdl] case status is when fall1 => data <= (others => '0'); status <= fall2; when fall2 => data <= x"ff0000ff"; -- data
Wenn am Anfang status fall1 ist und dementsprechend status auf fall2 setzt, wird danach der case-when-Block verlassen, oder springt er dann praktisch eine Zeile weiter und führt dann die when fall2 Anweisung aus?
-
Thread
DDS mit DE0-Nano Board nur niedrige Frequenzen?
when "11" => ADDRESS <= 7680-ACCUM_TMP; -- vierter Quadrant when others => ADDRESS <= 0; end case; end process; leider rechnet der nicht richtig! ich laufe immer aus dem Indexbereich
when "11" => ADDRESS <= 7680-ACCUM_TMP; -- vierter Quadrant when others => ADDRESS <= 0; end case; end process;
-
Thread
Schrittverlust im Schrittmotor korrigieren
A1 xor A2; WHEN OTHERS => aus <= "00000000"; END CASE; ---------------------------------------------------
A1 xor A2;--10101010 WHEN OTHERS => aus <= "00000000"; END CASE; ELSE
-
Thread
Spartan 3e - DAC
rising_edge(clk) then if btn = '1' then dacstate <= start; else case dacstate is when start => dacstate <= sendbit; : when sendbit => SClk <= '0'; : [/vhdl] Wenn der prellt, dann startest du bei aktiviertem CS blitzschnell z.B. 10 mal hintereinander eine
dataOldA, dataOldB, > dataOldC, dataOldD : std_logic_vector (11 downto 0) := (others => '0'); > begin > if rising_edge(clk) then > > case dacState is > when idle => --idle
-
Thread
Record initialisieren
data : std_logic; fcs : std_logic; end record; signal sdiag: diag_typ := (others=>'0'); begin sdiag.gap <= gap when rising_edge(clk); sdiag.data <= sdiag.gap when rising_edge(clk); data <= sdiag.data when rising_edge(clk); end Behavioral; [/vhdl] Nur wenn
std_logic_vector(3 downto 0); fcs : std_logic; end record; signal sdiag: diag_typ := (data=>(others=>'0'), others=>'0'); -- oder -- signal sdiag: diag_typ := ('0','0',(others=>'0'),'0'); begin sdiag.gap <= gap when rising_edge(clk); sdiag.data(0) <= sdiag.gap when rising_edge(clk)
-
Thread
bad synchronous description
if INPUT = "10" then NEXT_STATE <= Z1; end if; when Z3 => NEXT_STATE <= STATE; if INPUT = "00" or INPUT = "11" then NEXT_STATE <= Z1; end if; when others => -- Fehler
when others => OUTPUT <= (others => 'X'); end case; end process; end architecture; Ich empfehle Dir folgendes Buch: J. Reichardt / B. Schwarz: VHDL-Synthese ISBN: 3-486-25809-5
-
Thread
FPGA, Datenbus & Register
if ce = '0' then if oe = '0' then case to_integer(unsigned(a)) is when 0 => d <= r0; when 1 => d <= r1; when 2 => d <= r2; when others => null; end case; end if; if we = '0' then case to_integer(unsigned(a)) is when 0 => r0 <= d; when 1 => r1 <= d; when 2 => r2 <= d; when others => null; end case; end if; else
-
Thread
Combinatorical Loop Found
-- access single registers case sDspAddrA is when addr_Register_1 => oRegister_1 <= sDspDataInD; when addr_Register_2 => oRegister_2 <= sDspDataInD; [...] when others =>
_3 <= (others => (others => '0')); oBlock_4 <= (others => (others => '0')); oBlock_5 <= (others => (others => '0')); oBlock_6 <= (others => (others
-
Thread
Hauptprogramm mit 2 Prozessen gegen testbench
: unsigned(15 downto 0):=(others => '0'); signal r2_ref_in : unsigned(7 downto 0):=(others => '0'); signal r3_ref_in : unsigned(7 downto 0):=(others => '0'); signal ref_result : std_logic_vector(15 downto 0):=(others => '0');
r2_rdref <= '1'; bres_set <= '0'; end if; when HOST_RD_DATA_1 => if (r_rdref(SHIFT_READ_WIDTH-2) = '1') then state <= HOST_RD_DATA_2; ref_in1 <= (others => '0'); ref_in2 <= ref_in;
-
Thread
Zähler Problem
"when others" muss man schreiben, es wird aber nicht in Hardware umgesetzt.
Ist dann "when others" = "1111" ? Weil wenn ich When others ne '1' zuweißse bekomm ich ständig nen reset und keinen Ausgang. Hier das ganze Prog. vll. wirds dann verständlicher: entity PRNG is
-
Thread
Bits aus Vektor maskieren und verschieben
_0_TEMP(47); WHEN OTHERS => Bit_CTR := Bit_CTR - Bit_CTR; END CASE; else Bit_CTR := Bit_CTR + 1; end if; [/vhdl] Viele Grueße MemY
0) = "1000" else 4 when mask(4 downto 0) = "10000" else 5 when mask(5 downto 0) = "100000" else 6 when mask(6 downto 0) = "1000000" else 7 when mask(7 downto
-
Thread
FSM funktioniert nicht wie ich will
relativ einfach, da bei rising edge dieses Signal auftauchen kann ``` testcheck : process (Daten) WHEN WAIT_FOR_ADR1 => -- check first addres case FRAME_PART1v2 is when X"5a50dad0d1d2d3d4" => DETECTED_ADR1 <= '1'; when others => end process testcheck; `
when X"5a50dad0d1d2d3d4" => DETECTED_ADR1 <= '1'; when others => end case; ```
-
Thread
VHDL State Machine - Case vs. If/Elsif
Außer man ist faul und fasst alle Zustände, in denen nichts oder das > selbe zu tun ist, in einem "when others" zusammen. Oder man führt aus Gewohnheit einen "when others" Pfad ein, wo es gar keine "others" mehr gibt. Wenn ich solchen VHDL-Code vors Auge bekomme, dann ist das für mich dann immer ein Warnsignal mit Ausrufezeichen: http://www.lothar-miller.de/s9y/categories/25-when-others
-
Thread
If Anweisung - Sram Problem
; when "001" => sram_data_led <= "01010"; when others => sram_data_led <= "01110"; end case; [/vhdl] Ich hoffe mir kann kurz einer einen Typ geben, da ich sonst noch verzweifle
we_oe_change <= "011"; end if; when "001" => sram_data_led <= "01010"; when others => sram_data_led <= "01110"; end case;
-
Thread
Event Counter funktioniert nur in der Simulation
: process (clk, reset) begin if reset='0' then cnt <= 0; outputbuffer <= (others => '0'); state <= wait_for_count ; else if clk = '1' and clk'event then case state is when wait_for_count => if timebase ='0' then
Takt. Der ganze Prozess kann also auf diese Kombinatorik abgebildet werden: busif <= outputbuffer when rd *'1' else (others => 'Z'); Wenn das aber ein Bus innerhalb des FPGAs ist, dann muss er sowieso in einen Multiplexer aufgelöst werden, denn im FPGA gibt es kein 'Z'.
-
Thread
Integer vergleichen
wi_hallB); hc <= to_bit(wi_hallC); with bit_vector'(ha ,hb ,hc) select Sensorzustand <= 0 when "001", 2 when "011", 4 when "010", 6 when "110", 8 when "100", 10 when "101", 12 when others; if (blockkomultation(Sensorzustand)(0) = 0) then
wi_hallB); hc <= to_bit(wi_hallC); with bit_vector'(ha ,hb ,hc) select Sensorzustand <= 0 when "001", 2 when "011", 4 when "010", 6 when "110", 8 when "100", 10 when "101", 12 when others; process begin -- motorzustand setzen if
-
Thread
Nicht-Spezifische Latch-Warnung
,i_FIFO_DataOut) begin case int_s_CurrentState is when PART_1 => int_SlaveOut <= x"1234"; when PART_2_READ => int_SlaveOut <= i_FIFO_DataOut; when PART_2_WRITE => int_SlaveOut <= x"5678"; when OTHERS => int_SlaveOut
jetzt weiter arbeiten zu können. Den problematischen Teil case int_s_CurrentState is when PART_1 => int_SlaveOut <= x"1234"; when PART_2_READ => int_SlaveOut <= i_FIFO_DataOut; when PART_2_WRITE => int_SlaveOut <= x"5678"; when OTHERS => int_SlaveOut
-
Thread
Signal im gleichen Takt zweimal ändern?
signal <= '0'; isc_state <= IDLE; elsif rising_edge(clk) then case (state) is when IDLE => -- nicht relevant ; when FILL => signal <= '0'; if (fifo_empty = '0') then signal <= '1'; end if; when others =>
end if; when others => state <= IDLE; end case; end if; end process; Ist das denn auch ok? Ich meine, die if Zeile, enthält denn counter dort noch den Wert VOR der Inkrementierung
-
Thread
Sporadischer Lesefehler
signal load_addr : std_logic_vector(15 downto 0); begin RAM_ADDR <= load_addr when LOAD = '0' else "00110000" & PROXY_ADDR when PROXY_SEL = '0' else (others => '-'); with LOAD select RAM_DATA <= LOAD_DATA when '0', (others => 'Z') when others; RAM_OE <= '1' when LOAD = '0' else '0' when PROXY_SEL = '0' else '1'; with LOAD select RAM_WE <= LOAD_WE when '0', '1' when others;
-
Thread
SPI->IDE oder MMC
Ja natürlich geht das. Port_F <= Port_D when Port_A = "001" else (others => 'Z'); Port_G <= Port_D when Port_A = "010" else (others => 'Z'); Port_E <= Port_D when Port_A = "100" else (others => 'Z'); Port_H <= Port_D when Port_A = "011" else (others => 'Z'); Port_I <= Port_D when Port_A = "111" else (others => 'Z'); Allerdings verstehe ich nicht was das bei der Ansteuerung helfen soll. Gruß Hagen
-
Thread
N-Stufiges Flip Flop erzeugen
of std_logic_vector(15 downto 0); signal vsr : slv16_array := (others => (others => '0')); : vsr <= vsr(n-2 downto 2) & invect when rising_edge(clk); -- liest ein und schiebt nach links outvect <= vsr(n-1); : [/vhdl] Wenn die Länge des Schieberegisters zur Laufzeit
slv16_array is array (n-1 downto 0) of std_logic_vector(15 downto 0); signal vsr : slv16_array := (others => (others => '0')); signal vsr_out : std_logic_vector(15 downto 0); generic n : natural := 2; vsr <= vsr(n-2 downto 0) & invec when rising_edge(clk); vsr_out <= vsr(n-1) when n > 0 else
-
Thread
Optimierung möglich?
<= "0000000001"; --10MHz when others => teiler_faktor <= "0000000000"; --50kHz und default end case; end process; process (CLOCK) begin if CLOCK='1' and CLOCK'event then if Teiler > "0000000000
count_val /= "0000000000" ersetzen. Warum hat count_val 10 Bit? 9 reichen doch auch... when others => teiler_faktor <= "0000000000"; --50kHz und default Meinst bestimmt 50MHz? Wenns du noch etwas Strom sparen willst, könntest du auch darüber nachdenken den Frequenzteiler asynchron aufzubauen
-
Thread
Can not determine the "others" values in aggregate.
0); signal STAGE3 : STD_LOGIC_VECTOR (15 downto 0); begin STAGE1 <= A(14 downto 0) & (others => '0') when pos(0) = '1' else A; STAGE2 <= STAGE1(13 downto 0) & (others => '0') when pos(1) = '1' else STAGE1; STAGE3 <= STAGE2(11 downto 0) & (others => '0') when pos(2) = '1' else STAGE2; Y <= STAGE3(7 downto 0) & (others => '0') when pos(3) = '1' else STAGE3; end Behavioral; [/vhdl] Achja, wenn ich händisch die Größen angebe die er auffüllen soll funktionierts natürlich.
-
Thread
Interne Tristates
[vhdl] mux_signal <= prozess1_enable & prozess2_enable & prozess3_enable; case mux_signal is when "100" => D_OUT <= d_out_prozess1; when "010" => D_OUT <= d_out_prozess2; when "001" => D_OUT <= d_out_prozess3; when others => null; end case; [/vhdl] Ist das so ungefähr richtig? Aber
dein MUX ist in realitaet ein latch, wenn du wirklich ein MUX haben willst dann solltest du in allen when's dein D_OUT setzen. z.B so: [VHDL] case mux_signal is when "100" => D_OUT <= d_out_prozess1; when "010" => D_OUT <= d_out_prozess2; when "001" => D_OUT <= d_out_prozess3; when others
-
Thread
i2c slave controller
data_valid <= '0'; next_state <= s_idle; int_reg <= (others => 'Z'); Dout <= (others => 'Z'); elsif clk'event and clk='1' then case state is when s_idle =>
; data_valid <= '0'; next_state <= s_idle; int_reg <= (others => 'Z'); Dout <= (others => 'Z'); elsif clk'event and clk='1' then case state is when s_idle => data_valid <= '0'; rx_done
-
Thread
Frage(n) zur Schnittstelle Picoblaze
downto 8) when i8bit.addr = addrHigh else memvar(7 downto 0) when i8bit.addr = addrLow else (others=>'0'); PROCESS BEGIN ... [/vhdl] Somit liegen
nicht, was ich tun kann/soll. Hier mal der "Case": [vhdl] case i8bit.addr is when addrStatus => ... when addrHigh => ... when addrLow => ... when others => NULL; end case; [/vhdl] Es wird jede Konstante (s.o.) als "nicht konstant
-
Thread
Erster ernster Versuch- kann mal jemand drüberschauen?
sub_prescale <= 1; else --avr style prescaler selection case TWPS_I is when "00" => sub_prescale <= 1; when "01" => sub_prescale <= 4; when "10" => sub_prescale <= 16; when "11" => sub_prescale <= 64; when others => null; end case;
)? Weil TWPS_I nur 4 Zustände hat und alle im case auscodiert wurden, solltest du aber das [vhdl]when others => null;[/vhdl] aus dem case herauslassen. Sonst könnte man ja meinen, da gäbe es noch andere (nicht abgedeckte) Zustände. Und das wäre dann doch etwas unübersichtlich ... ;-)
-
Thread
ALU (1Bit-Prozessor)
OTHERS; Ausgang(1) <= '0' WHEN "000", '1' WHEN "001", (Daten(0) + Daten(1)) WHEN "010", (Daten(0) NOR Daten(1)) WHEN "011", (Daten(0) == not(Daten(1)))
Daten(0) WHEN "110", ( (Daten(0) and not(Daten(1))) or (not(Daten(0)) and Daten(1)) ) WHEN "111", --Summe eines Halbaddierers, da nur A und B '0' WHEN OTHERS; WITH Funktion
-
Thread
State_Machine
WHEN z0 => Sout <= '0'; WHEN z1 => Sout <= '1'; WHEN z2 => Sout <= Sin; WHEN OTHERS => Sout <= '0'; END CASE;
state <= s1; elsif (clk=’1’ and clk’Event) then case state is when s1 => if x1=’1’ then state <= s2; else ..... [/VHDL] und nie das when others vergessen.... Sebastian
-
Thread
Case-Anweisung VHDL Problem
Da fehlt ein "When others => led_out <= "?";"
es ein when. y kann Werte von 00 bis 11 annehmen. Für jeden dieser Werte gibt es ein when. Da [vhdl]when others => led_out "11111111";[/vhdl] fehlt ein "<=" [vhdl]when others => led_out <= "11111111
-
Thread
Avalon MM Bus Addressing
=> RZM_Ud1Ref <= avs_writedata; when x"003" => RZM_Uq1Ref <= avs_writedata; when x"004" => RZM_theta1 <= avs_writedata; when others => NULL; end case; end if; end process write_regfile_pro
write_regfile_pro: process (clk, rst_n) begin if rst_n = '0' then -- asyn reset Test <= (others => '0'); elsif rising_edge(clk) and avs_write_n = '0' then case avs_address is when x"003" => Test <= avs_writedata; when others => NULL; end case
-
Thread
Adresslatch für AVR in CPLD fehlerhaft?
'0' then Z_LATCH <= "00"; elsif falling_edge(CLK) then case Z_LATCH is when "11" => S_A_SRAM(7 downto 0) <= AD_AVR; Z_LATCH <= "11"; when others => Z_LATCH <= Z_LATCH + 1; end case; end if; end process LATCH; [/VHDL]
011"; if AVR_AH(7 downto 2) = "000001" then case AVR_AH(1 downto 0) is when "01" => CS_Latch <= "111"; when "10" => CS_Latch <= "110"; when "11" => CS_Latch <= "101"; when others => NULL; end case; end if; end if;
-
Thread
FT2232H und riesen Slack
<= (others => 'Z') when (iRXF = '0') else iTXData; nTXRun <= '1' when (iTXEmpty = '0' AND iTXE = '0' AND iRXF = '1' AND nRXRun = '0') else '0'; nRXRun <= '1' when (iRXFull = '0' AND iRXF = '0' AND nTXRun = '0') else '0'; oRXData <= Datainout when (iRXFull = '0' AND iRXF = '0' AND nTXRun = '0') else (others => '0'); oRXWrite <= '1' when (stateRX = read_from_USB) else '0'; end behaviour;[/vhdl]
-
Thread
Mittelwertfilter
da nicht. Das hier ist z.B. am schnellsten und ressourcensparendsten: [vhdl] ReadyxSO <= "000" when DataBufxD="0000" else "001" when DataBufxD="0001" or DataBufxD="0010" or DataBufxD="0100" or DataBufxD="1000" else "010" when DataBufxD="0011" or DataBufxD="0110" or DataBufxD
DataBufxD IS ARRAY(0 to 64) OF std_logic_vector(3 downto 0); signal DataBufxDS : DataBufxD :=(others =>(others=>'0')); begin FIR_ff : process(ClkxCI,RstxRBI) begin if RstxRBI = '1' then DataBufxDS <= (others =>(others=>'0')); elsif rising_edge (ClkxCI) then DataBufxDS
-
Thread
spezielles Lesetiming - so realisierbar?
cam_state1 <= WARTEN; read_en1 <= '0'; read_en2 <= '0'; PDATA <= (others => 'Z'); else case cam_state1 is -- WARTEN when WARTEN => read_en1 <= '0'; read_en2 <= '0'; PDATA <= (others =
else read_en1 <= '0'; read_en2 <= '0'; PDATA <= (others => 'Z'); cam_state1 <= WARTEN; end if; --OTHERS when others => read_en1 <= '0'; read_en2 <= '0';
-
Thread
VHDL
CLK2 <= '0'; end if; when others => var_zustand_vektor := "00"; End Case; end if; end Process; end behv;
:= "000"; end if; when "100" => if ER = '1' then var_ausgabe_vektor := "011"; var_zustand_vektor := "000"; end if; when others => var_zustand_vektor := "000";
-
Thread
FPGA mit Datenbus eines MCs verbinden
rising_edge(clk) then if (cs = '0' and we = '0') then case address is when x"00" => -- x"00" entspricht ADR x80000000 am LPC2294 data <= datenbus; when others => null; end case; end if; end if; end process
-- Zuweisung Datenbus data <= data_out when (oe = '0' and cs = '0') else (others => 'Z'); data_in <= data; [/vhdl] Gruß Ralf
-
Thread
I/O Port so OK?
end if; end if; end if; --asynchronous reset if (res = '0') then p0reg <= (others => '0'); ddr0 <= (others => '0'); end if; if (rd = '1') then data <= (others => 'Z'); end if; end process; G: for i in 0 to 7 generate p0(i) <= p0reg(i) when ddr0(
end if; end if; end process; -- Daten fürs Lesen bereitstellen dout <= p0 when addr = '0' else ddr0; -- Busverwaltung din <= data; data <= (others => 'Z') when rd='1' or cs='1' else dout; [/vhdl] > Erstes Projekt sollte ein 8-bit I/O Port
-
Thread
DAC108S085 + FPGA
-------------------- when Idle => data_o <= '0'; sync_o <= '1'; case s_counter1 is when "0000" => s_data(15) <= '0'; s_data(14 downto 12) <= s_counter1
; when others => s_data(15) <= '0'; s_data(14 downto 12) <= s_counter1 (2 downto 0); s_data(11 downto 2) <= data_i7; s_data(1 downto 0) <= "00";
-
Thread
MC8051 Oregano Modelsim
00000000"; WHEN OTHERS => mw_U_0rom_table(mw_U_0addr_int) <= (OTHERS => 'X') ; END CASE; END PROCESS ; u_0rom_read_proc : PROCESS ( clk ) BEGIN IF (clk'EVENT AND clk='1') THEN
Andreas schrieb im Beitrag #2118881: > WHEN OTHERS => mw_U_0rom_table(mw_U_0addr_int) <= (OTHERS => 'X') ; ... > Wie in aus dem VHDL-File hervorgeht sind dort FF eingebaut. Dies hat zur Also ich sehe da 'X' an den undefinierten Speicherstellen
-
Thread
Unerwartetes Syntheseergebnis (??)
" => temp := x"54"; when x"fe" => temp := x"bb"; when x"ff" => temp := x"16"; when others => null; end case; return temp; end function SubstitutionBox; process(CLK,RES_N) is type sub_state_type
Was ist mit dem "when others" in der statemachine für sub-state?
-
Thread
Problem bei der Simulation (Buskonflikt)
<= dIn_neu when '1', dIn_alt when others; [/vhdl] Durch diese hier: [vhdl] -- Erzeugen des D-FlipFlop zum Zwischenspeichern -- dIn_alt <= dIn_neu when rising_edge(clk); [/vhdl] Erst dann passt der
lkmiller ja der ise (10.1) macht daraus ein Latch: >with clk select > dIn_alt <= dIn_neu when '1', > dIn_alt when others; Staun - hab das eben mal eingegeben >-- Erzeugen des D-FlipFlop zum Zwischenspeichern -- > dIn_alt <= dIn_neu when rising_edge(clk); ... und das ise erzeugt
-
Thread
Probleme mit state machine
reset2 <= '1'; -- OTHERS when others => cam_state2 <= WARTEN_RES; end case; end if; end if; end process; [/vhdl] Zur Aufgabe: der externe RESET wird irgendwann auf '1' gesetzt
Dorthin springt die FSM garantiert nicht, denn für /others/ wird keinerlei Logik generiert, weil alle Zustände von /cam_state2/ verwendet werden: [vhdl] -- OTHERS when others => cam_state2 <= WARTEN_RES; [/vhdl] Siehe