阳光天蓝色 发表于 2016-1-16 00:18:40

小白请教关于FPGA历程中rst_n 需不需要存在?

如题吧,由于毕业设计需要买了一块ep4ce6的 FPGA 开发板 比较便宜 哈,,这个板子 没有视频,只有历程,看的是 特权同学的视频 ,在看两个人的代码时发现 特权同学的程序上有 rst_n而我买的那家的程序里面没有rst_n具体如下:
特权同学:always @ (posedge clk or negedge rst_n)
                if(!rst_n)cnt<= 25'd0;
                else cnt<= cnt +1'b1; // 循环计数
xxx:always @ (posedge clock )
begin
count = count + 1'b1;
dig= 8'b00000000;//
end

不解这个 rst_n 加与不加 有何区别?请指教谢谢

alcohol 发表于 2016-1-16 01:17:16

不加就是计数器从上电完了就开始基数,记满了继续;有复位就是没记满给个 reset 后归零

薄积无发 发表于 2016-1-16 09:45:41

加RST_n字段,有初始化清零动作

若没有这个字段,count中初始值可能是随机的

Nuker 发表于 2016-1-16 11:55:30

在FPGA里面可以不用全局复位信号rst_n初始化寄存器值,需要在定义寄存器的时候加上初始值,否则就像楼上所说的:

reg count = 25'd123;

因为FPGA上电是需要配置的,工具会直接将这个初始值配置到对应的寄存器。

always @ (posedge clock )
begin
    count = count + 25'd1;
end

配置后,count就从123开始累加。

NJ8888 发表于 2016-1-16 11:59:16

反正计数是循环的,你自己考察评估是否要和其他部分有个同步协调关系,比如就做简单分频计数,那就不用复位,开始若干时间不准后面就准了这就不用复位,如果涉及其他功能,需要协调就要加上复位以确定相对时间关系

kongethan 发表于 2016-2-27 14:55:29

记得在哪本书上看过这样的解释:实际硬件中,存在上电寄存器复位,因此可以不加寄存器复位语句;而编写的程序在仿真时,寄存器是需要复位或者给初值的,因此应该加上rst_n

zkf0100007 发表于 2016-2-28 20:07:43

可以赋初值,并且可综合

阳光天蓝色 发表于 2016-3-4 20:23:39

嗯嗯,谢谢各位的回答

at90s 发表于 2016-3-4 22:46:03

一定要复位或者定义的时候给初值,否则综合器会认为count是任意值,既然是任意值,综合器会挑一个可以生车最小逻辑的常值给count,也就产生不了计数器逻辑了。这点在综合器输出的warming里面看到

denike 发表于 2016-4-11 17:40:25

Nuker 发表于 2016-1-16 11:55
在FPGA里面可以不用全局复位信号rst_n初始化寄存器值,需要在定义寄存器的时候加上初始值,否则就像楼上所 ...

我就是这样做的
页: [1]
查看完整版本: 小白请教关于FPGA历程中rst_n 需不需要存在?