Liebe alle, vielen Dank für eure Inputs!
Nun zur Erklärung: Ich schreibe demnächst eine Prüfung in VHDL und ich
möchte mich gut darauf vorbereiten. Wir haben einen ganzen Katalog mit
Aufgabenstellungen erhalten - ohne Lösungen - und ich versuche jetzt ein
paar von diesen zu lösen. Ich habe leider auch keine Simulator. Ich
mache es einfach schriftlich für mich um zu sehen, ob ich die Thematik
verstanden habe. :) Und ich bin sehr froh um eure Unterstützung.
Jetzt zurück zum Beispiel.
Die Schnittstellen wurden vorgegeben. Sprich clk und rst als std_ulogic
und count_out als std_ulogic_vector. Beim Rest bin ich frei. Ich soll
einzig einen parametrisierbaren modulo-n down-counter machen.
@Mulen deine Lösung gefällt mir gut! Ich dachte es wäre übersichtlicher
mit der next_state_logic. Aber ich habe mich wohl geirrt.
Nun das heisst ich würde meine Code wie folgt anpassen:
1 | entity mod_n_counter is
|
2 |
|
3 | generic(
|
4 | n : integer := 255;
|
5 | );
|
6 | port(
|
7 | clk : in std_ulogic;
|
8 | reset : in std_ulogic;
|
9 | count_out : out std_ulogic_vector(integer(ceil(log2(real(n+1))))-1
|
10 | down to 0);
|
11 | );
|
12 | end mod_n_counter;
|
13 |
|
14 |
|
15 | architecture behavioral of mod_n_counter is
|
16 |
|
17 | constant bit_width: integer:= integer(ceil(log2(real(n+1))));
|
18 | signal count : unsigned(bit_width-1 down to 0);
|
19 |
|
20 |
|
21 | process(clk,reset)
|
22 | begin
|
23 | if reset='1' then
|
24 | count <= to_unsigned(n-1, bit_width);
|
25 | elsif(rising_edge(clk))then
|
26 | if count = to_unsigned(0, bit_width)then
|
27 | count <= to_unsigned(n-1, bit_width);
|
28 | else
|
29 | count <= count - '1';
|
30 | end if;
|
31 | end if;
|
32 |
|
33 | count_out = std_ulogic_vector(count);
|
34 |
|
35 | end behavioral;
|
Wäre das so richtig?
Wenn ich jetzt aber meinen Code nehmen würde und einfach das n als
unsigned deklarieren würde, wir müsste ich da vorgehen? Weil ich ja
nicht weiss, was mein n ist. Also ich würde etwas wie generic (n:=
unsigned(???))
Entschuldigt, ich bin wirklich fleissig am lernen und möchte es gerne
verstehen. Sorry wenn immer noch ein bisschen Mühe habe.