Creé mi propio reloj, ya que necesito un reloj de 2Mhz y el IP del generador del reloj no me deja pasar por debajo de los 6Mhz. Creé un módulo divisor de reloj.
module clock_divider#(parameter HALF_CYCLE_COUNT = 128, COUNT_BITS = 8)
(
input clk_in,
output reg clk_out = 1'b0
);
reg [COUNT_BITS - 1:0] counter = 1'b0;
always @(posedge clk_in) begin
if(counter == HALF_CYCLE_COUNT - 1) begin
counter <= 0;
clk_out = ~clk_out;
end else counter <= counter + 1;
end
endmodule
Aquí está mi módulo de nivel superior.
module audio_visualizer
(
input clk,
input m_data,
output m_clk,
output reg m_lr = 1'b1
);
wire pdm_clk;
clock_divider#(.HALF_CYCLE_COUNT(100), .COUNT_BITS(7)) pdm_clk_div(clk, pdm_clk);
assign m_clk = pdm_clk;
wire [7:0] sample;
wire sample_changed;
sampler s(pdm_clk, m_data, 1'b0, sample, sample_changed);
ila_0 i(clk, sample, sample_changed, pdm_clk);
endmodule
Quiero declarar una restricción para que vivado sepa la frecuencia de pdm_clk. Esto es lo que tengo ahora para restricciones de reloj.
set_property -dict { PACKAGE_PIN E3 IOSTANDARD LVCMOS33 } [get_ports { clk }]; #IO_L12P_T1_MRCC_35 Sch=clk100mhz
create_clock -add -name clk -period 10.00 -waveform {0 5} [get_ports {clk}];
create_generated_clock -name pdm_clk -source [get_ports clk] -divide_by 50 [get_ports pdm_clk]
Sigo recibiendo este error.
[Vivado 12-1387] No valid object(s) found for create_generated_clock constraint with option '-objects [get_ports pdm_clk]'. ["/home/chase/vivado-workspace/Sound/Sound.srcs/constrs_1/imports/Desktop/Nexys4DDR_Master.xdc":9]
No estoy seguro de cómo decirle a vivado cuál es la salida del reloj generado. También he probado [get_pins audio_visualizer/pdm_clk]
.