VHDL-Forum

 
Sie sind nicht eingeloggt.
LoginLogin Kostenlos anmeldenKostenlos anmelden
BeiträgeBeiträge MembersMitglieder SucheSuche HilfeHilfe
VotesUmfragen FilesDateien CalendarKalender BookmarksBookmarks
VHDL-Forum
7 Treffer gefunden
Suchdauer: 0,03 Sekunden
VHDL-Forum Anfang   zurück   weiter   Ende
   Betreff   Autor   Datum 
No new posts Linear Feedback Shit Register
Ich möchte ein 4bit LFSR aufbauen mit meine DATA als Eingang aufbauen. Nur leider kann ich nicht meinem Eingang XOR in das LFSR verbinden. Es kommt immer folgende Fehlermeldung: ERROR:HDLParsers:808 - D:/Studium/VHLD-Project/decoder.vhd Line 35. xor can not have such operands in this context. Kann jemand mir sagen was ich falsch mache? Ich habe den Eingang als bit und das LFSR ist als bit_vector und wenn ich nur ein bit nehme, sollte doch beides gleich sein? Hier mein Code library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; use IEEE.std_logic_1164.all; entity decoder is Port ( header_flag : out std_logic; message_flag : out std_logic; checksum_flag : out std_logic; data : in std_logic; reset : in std_logic; clk : in std_logic); end decoder; architecture Behavioral of decoder is signal LFSR : bit_vector(3 downto 0); signal R : bit_vector(3 downto 0); signal temp: std_logic; begin process(clk, reset) variable feedback: bit; variable temp: bit; begin if reset = '1' then header_flag <= '0'; message_flag <= '0'; checksum_flag <= '0'; LFSR <= "1111"; elsif rising_edge(clk) then feedback := LFSR(3) xor LFSR(0); LFSR(0) <= feedback xor data ; --hier soll der Fehler sein LFSR(1) <= LFSR(0); LFSR(2) <= LFSR(1); LFSR(3) <= LFSR(2); end if; end process; end Behavioral;
Marc10k 08.12.04, 20:11
No new posts Re: Mehrere Prozesse mit gleichen Signalen
Du kannst immer nur in EINEM Process ein Signal ändern, sonst gibt es diese Fehlermeldung. Das Programm musst du so umschreiben das es nur in einem Process geändert wird. Gelesen kann es aber dann in mehreren Processen. Marcus
Marc10k 08.12.04, 20:02
No new posts Fehlermeldung 605
Ich bekommen folgende Fehlermeldung wenn ich mein Programm übersetzte: ERROR:NgdBuild:605 - logical root block 'g_clock' with type 'g_clock' is Kennt jemand diese Fehlermeldung und weiss wie ich sie beheben kann? Gruss Marcus [i] library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity g_clock is Port ( reset : in std_logic; clk : in std_logic); end g_clock; architecture Behavioral of g_clock is signal counter : std_logic ; begin reseting : process (reset, clk) begin if reset = '1' then counter <= '1'; elsif (clk'event and clk = '1') then counter <= '0'; end if; end process; end Behavioral; [/i]
Marc10k 08.11.04, 23:25
No new posts Re: VHDL Schieberegister
Meine Vorfreude war vielleicht etwas zu früh. Den Fehler habe ich nicht mehr aber es werden leider auch meine Daten nicht mit der Clock übertragen. Ich den Code abgeändert und versucht die Daten im Takt der Clock zu übertragen. Nur leider klappt es nicht so wie ich mir das so vorstelle. Vielleicht kann jemand mir helfen. Hier mein jetzige Code: [i] library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -- Header 7 bits 0010010 -- Data 1 24 bits 264744 - 0010.0110.0100.0111.0100.0100 -- Data 2 24 bits 199408 - 0001.1001.1001.0100.0000.1000 -- Checksum 4 bits entity Sender is Port ( Reset : in std_logic; Run : in std_logic; Mode : in std_logic_vector(1 downto 0); clock : in std_logic; Data : out std_logic); end Sender; architecture Behavioral of Sender is begin process (Mode, Run, clock) variable shift_reg_h: std_logic_vector(6 downto 0); variable shift_reg_d: std_logic_vector(23 downto 0); variable shift_reg_c: std_logic_vector(3 downto 0); variable M : integer; begin if (clock'event and clock = '1') then if Run = '1' then case Mode is when "00" => -- good header, data segment 1 and checksum -- send the header first shift_reg_h := "0010010"; for I in 0 to 6 loop shift_reg_h (6 downto 1) := shift_reg_h (5 downto 0); if (clock'event and clock = '0') then Data <= shift_reg_h (6); end if; end loop; -- send the datasegment next shift_reg_d := "001001100100011101000100"; --Marcus number for I in 0 to 23 loop shift_reg_d (23 downto 1) := shift_reg_d (22 downto 0); Data <= shift_reg_d (23); end loop; -- send the checksum last when "01" => -- good header, data segment 2 and checksum -- send the header first shift_reg_h := "0010010"; for I in 0 to 6 loop shift_reg_h (6 downto 1) := shift_reg_h (5 downto 0); Data <= shift_reg_h (6); end loop; -- send the datasegment last shift_reg_d := "000110011001010000001000"; -- Johns number for I in 0 to 23 loop shift_reg_d (23 downto 1) := shift_reg_d (22 downto 0); Data <= shift_reg_d (23); end loop; -- send the checksum last when "10" => -- invalid header, data segment 1, checksum -- send the invalid header first shift_reg_h := "0000000"; -- INVALID HEADER for I in 0 to 6 loop shift_reg_h (6 downto 1) := shift_reg_h (5 downto 0); Data <= shift_reg_h (6); end loop; -- send the datasegment last shift_reg_d := "001001100100011101000100"; --Marcus number for I in 0 to 23 loop shift_reg_d (23 downto 1) := shift_reg_d (22 downto 0); Data <= shift_reg_d (23); end loop; -- send the checksum last when "11" => -- good header, datasegment 2, invalid checksum -- send the header first shift_reg_h := "0010010"; for I in 0 to 6 loop shift_reg_h (6 downto 1) := shift_reg_h (5 downto 0); Data <= shift_reg_h (6); end loop; -- send the datasegment next shift_reg_d := "000110011001010000001000"; -- Johns number for I in 0 to 23 loop shift_reg_d (23 downto 1) := shift_reg_d (22 downto 0); Data <= shift_reg_d (23); end loop; -- send the checksum last (INVALID) when others => Data <= 'X'; end case; end if; end if; end process; end Behavioral; [/i] Anbei auch noch mal der Code als vhd Datei.
Marc10k 03.11.04, 17:37
No new posts Einstellungen sepichern
Ich habe mein Project im Xilinx Project Navigator geschrieben und auch eine Testbench erstellt. Wenn ich nun auf "Simulate Behavioral Model" klicke öffnet sich ModelSim XE/Starter 5.8c und zeigt mir nun die Waveform und weiteres an. Wenn ich nun etwas in meiner Testbench ändere und es erneut simulieren will öffnet sich ein neues ModelSim und alle meine geänderten Sachen wie z.B. Namen in Waveview und Größe sind nicht mehr vorhanden. Wie kann ich dem Programm klar machen das es meine alten Einstellungen nehmen soll? Gruss Marcus
Marc10k 03.11.04, 17:32
No new posts Re: VHDL Schieberegister
Vielen Dank es klappt. :) Gruss Marcus
Marc10k 02.11.04, 14:26
No new posts VHDL Schieberegister
Mein VHLD Programm soll 35 bit (jetzt aber erstmal 7) seriell übertragen nach dem die Run-Taste und der Modus abgefragt wurde. Ich wollte erst die beiden Eingänge abfragen und dann mit jedem Clockzyklus ein bit übertragen. Es werden später beim Sender und Empfänger die gleiche Clock benutzt. Bei ansteigender Flanke werden die Daten geschrieben und bei fallender dann gelesen. Damit das ganze statisch bleibt. Ich habe schon folgendes geschrieben: [i] library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity Sender is Port ( Reset : in std_logic; Run : in std_logic; Mode : in std_logic_vector(1 downto 0); clock : in std_logic; Data : out std_logic); end Sender; architecture Behavioral of Sender is begin process (Mode, Run, clock) variable shift_reg: std_logic_vector(6 downto 0):= "1111111"; begin if Run = '1' then case Mode is when "00" => -- good header, data segment 1 and checksum Data <= '1'; for I in 0 to 6 loop shift_reg := "0010010"; if (clock'event and clock = '1') then shift_reg(6 downto 1) := shift_reg (5 downto 0); Data <= shift_reg(6); end if; end loop; when "01" => -- good header, data segment 2 and checksum Data <= '1'; when "10" => -- invalid header, data segment 1, checksum Data <= '1'; when "11" => -- good header, datasegment 2, invalid checksum Data <= '1'; when others => Data <= 'X'; end case; end if; end process; end Behavioral; [/i] Nur leider bekommen ich immer folgende Fehlermeldung: Signal Data cannot be synthesized, bad synchronous description. Kennt jemand Abhilfe? Gruss Marcus
Marc10k 02.11.04, 12:38
 
 
7 von 7 Ergebnisse Anfang   zurück   weiter   Ende
Search

powered by carookee.com - eigenes profi-forum kostenlos

Design © trevorj