在FPGA调试时经常会用到set up debug功能对开发板的引脚波或数据形进行分析,相比于例化ILA来说,set up debug更为便捷,只需要在我们所要观察的信号波形前面加上(*mark_debug = true*)即可,不需要调用ila IP核。
但是在综合之后,set up debug往往只有一个系统时钟提供选择,clock domain只能选板子输入时钟(例如50兆),这个时钟作为参考时钟肯定是不可以的,采样时钟频率太高,虽然有波形产生,但是采集的信号基本没有变化,所以在此基础上需要数字分频产生一个低频时钟信号。比如下面例子
module time_adv_even #(
parameter N = 5,
parameter WIDTH = 7
)
(
input clk,
input rst,
output reg clk_out
);
reg [WIDTH:0]counter;
always @(posedge clk or negedge rst) begin
if (rst == 1’b0) begin
// reset
counter <= 0;
end
else if (counter == N-1) begin
counter <= 0;
end
else begin
counter <= counter + 1;
end
end
always @(posedge clk or negedge rst) begin
if (rst == 1’b0) begin
// reset
clk_out <= 0;
end
else if (counter == N-1) begin
clk_out <= ~clk_out;
end
end
endmodule
通过数字分频信号综合后在clock domain并没有找到,仅仅还是只有一个时钟可选。
后来看schematic里面的接线情况。
发现,我的数字分频并没有应用上。
我怀疑是这个问题,所以进行了接线更改,然后进行测试,下面就是解决问题操作过程。首先创建一个module,将数字分频输出的时钟接到这个module上作为这个module的触发时钟,进行综合。
再打开set up debug进行查看,发现clock domain已经可以选择我们所生成的低频时钟。
成功解决问题