Module top — intégration¶
Le module top_nexys4 assemble les quatre sous-modules en une hiérarchie
complète et présente les ports physiques de la carte.
Hiérarchie des instances¶
top_nexys4
├── u_xadc : xadc_wrapper (VP/VN → adc_val[11:0], adc_valid)
├── u_cmp : comparator (adc_val → sig_bin)
├── u_edge : edge_detector (sig_bin → rising_pulse)
└── u_div : freq_divider (rising_pulse → clk_out_1m25)
Module complet¶
top_nexys4.v¶
`timescale 1ns/1ps
module top_nexys4 (
input wire clk_100mhz, // horloge 100 MHz (E3)
input wire rst_btn, // BTNC — reset (actif haut sur carte)
input wire vp_in, // JXADC pin 1 — VP
input wire vn_in, // JXADC pin 7 — VN
output wire clk_out_1m25, // sortie 1,25 MHz (JA[0])
output wire [11:0] led, // valeur ADC → 12 LEDs
output wire led_pulse // LED debug : clignote sur chaque front
);
// ── Signaux internes ─────────────────────────────────────
wire rst_n;
wire [11:0] adc_val;
wire adc_valid;
wire sig_bin;
wire rising_pulse;
wire clk_div;
// Le bouton BTNC est actif haut sur la Nexys 4 DDR
assign rst_n = ~rst_btn;
// ── 1. Acquisition analogique ────────────────────────────
xadc_wrapper u_xadc (
.clk (clk_100mhz),
.rst (rst_btn),
.vp_in (vp_in),
.vn_in (vn_in),
.adc_val (adc_val),
.adc_valid(adc_valid)
);
// ── 2. Comparateur — 12 bits → 1 bit ─────────────────────
comparator #(
.THRESHOLD(12'h800),
.HYST (12'd50)
) u_cmp (
.clk (clk_100mhz),
.adc_val (adc_val),
.adc_valid(adc_valid),
.sig_bin (sig_bin)
);
// ── 3. Détection de front montant ─────────────────────────
edge_detector u_edge (
.clk (clk_100mhz),
.rst_n (rst_n),
.sig_in (sig_bin),
.rising_edge (rising_pulse),
.falling_edge() // non utilisé
);
// ── 4. Diviseur ÷ 16 ─────────────────────────────────────
freq_divider #(.N(16)) u_div (
.clk (clk_100mhz),
.rst_n (rst_n),
.rising_pulse (rising_pulse),
.clk_out (clk_div)
);
// ── Sorties ──────────────────────────────────────────────
assign clk_out_1m25 = clk_div;
assign led = adc_val; // affichage brut ADC sur LEDs
assign led_pulse = rising_pulse; // debug : clignote à ~1 MHz
endmodule
Tableau de synthèse des signaux¶
Signal |
Freq. / type |
Direction |
Description |
|---|---|---|---|
|
100 MHz |
Entrée |
Horloge système, oscillateur Nexys 4 |
|
Statique |
Entrée |
Bouton BTNC, actif haut |
|
Analogique |
Entrée |
Signal différentiel XADC (JXADC) |
|
~1 Msps |
Interne |
Valeur 12 bits issue du XADC |
|
~1 MHz eff. |
Interne |
Résultat du comparateur (1 bit) |
|
~1 MHz eff. |
Interne |
Enable : 1 cycle par front montant |
|
~62,5 kHz* |
Sortie |
Signal divisé (PMOD JA[0]) |
|
~1 Msps |
Sortie |
Affichage valeur ADC (12 LEDs) |
* Fréquence effective limitée par le XADC (voir Acquisition analogique — XADC). Pour 20 MHz avec comparateur externe, la sortie serait 1,25 MHz.