Hallo, guten Tag.
Ich habe jetzt hier eine Demo wo die LED0 und LED7 blinkt.
Dieses liegt als Projekt vor und läuft auch.
Nun habe ich im Quartustextfenster dieses geändert und neu
abgespeichert:
count <= count + "0000000000000000000000001";
zu
count <= count + "0000000000000000000011111";
Anschließend compiliert und die neue SOF übertragen, aber die
Blinkfrequenz hat sich nicht geändert. Es wurde nicht übernommen?
Muß man ein neues Projekt erzeugen?
Danke.
Gruss
---------------------------------------------------
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity blink is
port (
clk: in STD_LOGIC;
led: out STD_LOGIC_VECTOR (1 downto 0)
);
end blink;
architecture blink_arch of blink is
signal state : STD_LOGIC_VECTOR(1 downto 0);
signal terminal_count : STD_LOGIC;
signal count : STD_LOGIC_VECTOR(24 downto 0);
begin
led <= state; -- led kann man nicht lesen, also verwenden wir intern ein
anderes signal
process (clk) -- Ein Puls
begin
if rising_edge(clk) then
count <= count + "0000000000000000000000001";
if (count = "1111111111111111111111111") then
terminal_count <= '1';
else
terminal_count <= '0';
end if;
end if;
end process;
process (clk)
begin
if rising_edge(clk) then
if terminal_count = '1' then
case state is
when "01" =>
state <= "10";
when "10" =>
state <= "01";
when others =>
state <= "01";
end case;
end if;
end if;
end process;
end blink_arch;
------------------------------------
Gast
#3619466
Hallo Peter Dein count signal wird nie auf 0 gesetzt (z.B. beim Reset am Start) und ist somit undefiniert. Daher wäre es Zufall, wenn count genau "1111111111111111111111111" erreichen würde.
Gast
#3619490
Peter Bierbach schrieb: > count <= count + "0000000000000000000000001"; > if (count = "1111111111111111111111111") then wenn du + 0000000000000000000011111 rechnest kannst du nicht auf 1111111111111111111111111 kommen ändere lieber die Abfrage
Gast
#3619497
Googler schrieb: > wenn du + 0000000000000000000011111 > rechnest kannst du nicht auf 1111111111111111111111111 kommen Wieso nicht?
Gast
#3619506
Peter Bierbach schrieb: > use IEEE.std_logic_unsigned.all; Verwende lieber ieee.numeric_std.all Siehe: Beitrag "IEEE.STD_LOGIC_ARITH.ALL obsolete" Dann kannst Du die Addition auch lesbarer gestalten:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
Ich hab gleich mal eine Stimulitestbench dazugebaut, damit kann man vorher testen, ob der Algorithmus passt. Duke
Peter Bierbach schrieb: > signal count : STD_LOGIC_VECTOR(24 downto 0); > count <= count + "0000000000000000000000001"; Zwischenfrage: Seit wann kann man mit std_logic_vector ohne vorherige Umwandlung nach unsigned Arithmetik betreiben?
Gast
#3619541
Lisa schrieb: > Googler schrieb: >> wenn du + 0000000000000000000011111 >> rechnest kannst du nicht auf 1111111111111111111111111 kommen > > Wieso nicht? OK. war Unsinn. Die 1 am Ende kumuliert natürlich genauso auf 1111111111111111111111111 Schäm.
Hallo, vielen Dank für die Hilfe. ----------------------- Ich hab gleich mal eine Stimulitestbench dazugebaut, damit kann man vorher testen, ob der Algorithmus passt. ------------------------ Ist diese Simulation auch ein Programm für das compilieren zu einer SOF oder nur für den Simulator? Wie startet man bitte das Simulationsprogramm in Quartus? Gruss
Josef G. schrieb: > Zwischenfrage: Seit wann kann man mit std_logic_vector ohne > vorherige Umwandlung nach unsigned Arithmetik betreiben? Das geht, wenn man die alten Synopsys Libs verwendet: Peter Bierbach schrieb: > use IEEE.std_logic_unsigned.all; Aber das ist ein Beschreibungsstil des letzten Jahrausends!! Heute verwendet man die herstellerunabhängige numeric_std: http://www.lothar-miller.de/s9y/categories/16-Numeric_Std Peter Bierbach schrieb: > Ist diese Simulation auch ein Programm Nein. Das ist KEIN Programm, weil VHDL nämlich eine "hardware DESCRIPTION language" und keine "hardware PROGRAMMING language" ist. Und weil VHDL eben nicht VHPL heißt. Du machst dich sachte lächerlich, wenn du beharrlich bei VHDL Code von einem Programm sprichst.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
