bonsoir je voulais savoir si ce code vhdl etait bon pour diviser une frequece de 4MHZ en ,10hz,100hz,1khz,10khz,100khz,1Mhz

Code vhdl : Sélectionner tout - Visualiser dans une fenêtre à part
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_UNSIGNED.all;
 
ENTITY clk_div IS
 
PORT
(
clock_27Mhz : IN STD_LOGIC;
reset : IN STD_LOGIC; 
clock_1MHz : OUT STD_LOGIC;
clock_100KHz : OUT STD_LOGIC;
clock_10KHz : OUT STD_LOGIC;
clock_1KHz : OUT STD_LOGIC;
clock_100Hz : OUT STD_LOGIC;
clock_10Hz : OUT STD_LOGIC;
clock_1Hz : OUT STD_LOGIC);
 
END clk_div;
 
ARCHITECTURE a OF clk_div IS
 
SIGNAL count_1Mhz: STD_LOGIC_VECTOR(4 DOWNTO 0);
SIGNAL count_100Khz, count_10Khz, count_1Khz,count_100hz, count_10hz, count_1hz : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS(clock_27Mhz,reset)
BEGIN
-- Divise par 27
IF reset = '0' THEN
count_1Mhz <= (others => '0');
count_100Khz <= (others => '0');
count_10Khz <= (others => '0');
count_1Khz <= (others => '0');
count_100hz <= (others => '0');
count_10hz <= (others => '0');
count_1hz <= (others => '0');
 
ELSIF rising_edge (clock_27Mhz) THEN 
IF count_1Mhz < 26 THEN
count_1Mhz <= count_1Mhz + 1;
ELSE
count_1Mhz <= (others => '0');
IF count_100khz < 9 THEN
count_100khz <= count_100khz + 1;
ELSE
count_100khz <= (others => '0') ;
IF count_10khz < 9 THEN
count_10khz <= count_10khz + 1;
ELSE
count_10khz <= (others => '0') ;
IF count_1khz < 9 THEN
count_1khz <= count_1khz + 1;
ELSE
count_1khz <= (others => '0') ;
IF count_100hz < 9 THEN
count_100hz <= count_100hz + 1;
ELSE
count_100hz <= (others => '0') ;
IF count_10hz < 9 THEN
count_10hz <= count_10hz + 1;
ELSE
count_10hz <= (others => '0') ;
IF count_1hz < 9 THEN
count_1hz <= count_1hz + 1;
ELSE
count_1hz <= (others => '0') ;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
 
IF count_1Mhz < 13 THEN
clock_1Mhz <= '0';
ELSE
clock_1Mhz <= '1' ;
END IF;
 
IF count_100khz < 5 THEN
clock_100Khz <= '0';
ELSE
clock_100Khz <= '1' ;
END IF;
 
IF count_10khz < 5 THEN
clock_10Khz <= '0';
ELSE
clock_10Khz <= '1' ;
END IF;
 
IF count_1khz < 5 THEN
clock_1Khz <= '0';
ELSE
clock_1Khz <= '1' ;
END IF;
 
IF count_100hz < 5 THEN
clock_100hz <= '0';
ELSE
clock_100hz <= '1' ;
END IF;
 
IF count_10hz < 5 THEN
clock_10hz <= '0';
ELSE
clock_10hz <= '1' ;
END IF;
 
IF count_1hz < 5 THEN
clock_1hz <= '0';
ELSE
clock_1Khz <= '1' ;
END IF;
END IF;
END PROCESS;
 
 
END a;