我正在寻找在Verilog中使用反相器生成环形振荡器并生成的方法。 到目前为止,这是我尝试过的:
module ringOsc(outclk);
parameter SIZE = 8; // This needs to be an even number
output outclk;
wire [SIZE : 0] w;
genvar i;
generate
for (i=0; i<SIZE; i=i+1) begin : notGates
not notGate(w[i+1], w[i]);
end
not notGateFirst(w[0], w[SIZE]);
endgenerate
assign outclk = w[0];
endmodule
它将被加载到FPGA上,并且将测量振荡频率(当然有9个以上的反相器)。这是正确的还是我错过了什么?任何帮助将不胜感激。
答案 0 :(得分:1)
对于环形振荡器,您需要延迟。您使用的//service
getData(url: string): Observable<any> {
return this.http.get(url).pipe(
map(this.extractData),
catchError(this.handleErrorObservable));
}
private extractData(res: Response) {
let body = res;
console.log(res)
return body || {};
}
refreshData(data) {
this.getData(this._url)
.subscribe(result => {
data = result
console.log(data)
});
}
门是理想模型,因此在仿真中没有延迟。
最简单的方法是在闸门上添加延迟:
not
启用enable也是一个好习惯:其中一个门是NAND门。
您还需要告诉该工具不要优化环形振荡器。为此,您必须查看FPGA的综合工具,尤其是约束设置以防止逻辑优化。将中间网定义为“保持”可能有效。