位置:51电子网 » 技术资料 » 家用电器

控制计数器暂停/连续计数设计可预置初值带使能控制端递减

发布时间:2023/6/8 8:59:51 访问次数:238

FPGA与CPLD有哪些主要区别?它们各有什么特点?

设计一个定时器。要求:

定时时间为24s,按递减方式计时,每隔1s,定时器减1。

设置两个外部控制开关(控制功能),控制定时器的直接复位、启动计时、暂停/连续计时。

当定时器递减计时到零(即定时时间到)时,定时器保持零不变,同时发出报警信号。

输入时钟脉冲的频率为1 Hz,输出为8421

定时器功能表BCD码。

解:逻辑设计,用计数器对1 Hz的时钟信号进行计数,其计数值即为定时时间。根据设计要求可知,电路需要输出2组8421BCD码,计数器初值为24,按递减方式计数,减到0时,输出报警信号,并能控制计数器暂停/连续计数,所以需要设计一个可预置初值的带使能控制端的递减计数器。

实现上述功能的Verilog HDL程序如下。HDL描述分为3部分:第一部分定义了电路的输入、输出信号。其输入信号为复位nRsT(低电平有效)、暂停/连续nPAusE和时钟CP。输出信号为TimerH(定时器的十位)、TimerL(定时器的个位)和报警Alarm。第二部分用一个连续赋值语句assign说明当计数器递减到0时,输出报警信号(Alarm=1)。第三部分用一个过程块always说明计数器的计数、处理操作,计数器的个位和十位均按8421BCD码方式递减计数。

input nRST,nPAUSE,CP; //定时器的输人信号

wire nRST,nPAUSE,CP;

output[3:0]TimerH,TimerL; //定时器的输出信号

reg[3:0]  TimerH,TimerL;

output Alarm; //定时时间到,输出报警信号Alarm=1

assngn Alarm=({TimerH,TimerL}==8’h00)&(nRST==1i b1); //输出报

//警信号

always@(posedge CP or negedge nRST or negedge nPAUsE)  //计数处理

begin

if( ~nRST)

{TimerH,TimerL}c8’h24; //复位时置初值24

eIse if(~nPAUsE)

{TimerH,TimerL}《-{TimerH,TimerL}; //暂停计时

else if({TimerH,TimerL}==8’h00) //定时时间到,保持0不变

begin{TimerH,TimerL}《={TimerH,TimerL};end

else nf(TimerL==4’hO)

begin TimerH 《= TimerHˉ11b1;TimerL 《=4’h9;end

e1se

begin TimerH 《= TimerH;TimerL 《= TimerLˉ1i b1;end

end∶Inodule

设计实现用CPLD器件实现上述设计的过程如下:

在Quartus Ⅱ软件中建立一个新的工程项目,输人上述HDL文件,对设计项目进行编译。

新建一个仿真波形文件,给出输人信号、输出信号的激励波形(图7.5.1中为方便仿真将时钟CP的周期设计为2 ms),对设计项目进行时序仿真,得到如图7.5.1所示的波形。分析波形图可知,开始和16~20 ms时,nRST为低电平,初值24被预置到计数器的输出TimerH、TimerL;4~8 ms时,nPAuSE为低电平,计数器暂停计数;其他时间nRsT、nPAUSE均为高电平,计数器在CP上升沿到来时递减计数,到68 ms之后,计数器一直输出为0,报警信号Alarm为高电平。仿真结果完全符合设计要求。

选定目标器件(例如EPM7032s),将输入、输出信号分配到器件相应的引脚上,然后重新编译设计项目,生成下载文件(文件后缀为,pof或.sof)。

将下载文件写人到目标器件中,就是一块专用的定时器电存储器、复杂可编程器件利明场可编程门阵列.


input nRST,nPAUSE,CP; //定时器的输人信号

wire nRST,nPAUSE,CP;

output[3:0]TimerH,TimerL; //定时器的输出信号

reg[3:0]  TimerH,TimerL;

output Alarm; //定时时间到,输出报警信号Alarm=1

assngn Alarm=({TimerH,TimerL}==8’h00)&(nRST==1i b1); //输出报

//警信号

always@(posedge CP or negedge nRST or negedge nPAUsE)  //计数处理

begin

if( ~nRST)

{TimerH,TimerL}c8’h24; //复位时置初值24

eIse if(~nPAUsE)

{TimerH,TimerL}《-{TimerH,TimerL}; //暂停计时

else if({TimerH,TimerL}==8’h00) //定时时间到,保持0不变

begin{TimerH,TimerL}《={TimerH,TimerL};end

else nf(TimerL==4’hO)

begin TimerH 《= TimerHˉ11b1;TimerL 《=4’h9;end

e1se

begin TimerH 《= TimerH;TimerL 《= TimerLˉ1i b1;end

end∶Inodule

设计实现用CPLD器件实现上述设计的过程如下:

在Quartus Ⅱ软件中建立一个新的工程项目,输人上述HDL文件,对

设计项目进行编译。

新建一个仿真波形文件,给出输人信号、输出信号的激励波形(图7.5.1中为方便仿真将时钟CP的周期设计为2 ms),对设计项目进行时序仿真,得到如图7.5.1所示的波形。分析波形图可知,开始和16~20 ms时,nRST为低电平,初值24被预置到计数器的输出TimerH、TimerL;4~8 ms时,nPAuSE为低电平,计数器暂停计数;其他时间nRsT、nPAUSE均为高电平,计数器在CP上升沿到来时递减计数,到68 ms之后,计数器一直输出为0,报警信号Alarm为高电平。仿真结果完全符合设计要求。

选定目标器件(例如EPM7032s),将输入、输出信号分配到器件相应的引脚上,然后重新编译设计项目,生成下载文件(文件后缀为,pof或.sof)。

将下载文件写人到目标器件中,就是一块专用的定时器电路

http://yushuokj.51dzw.com深圳市裕硕科技有限公司







FPGA与CPLD有哪些主要区别?它们各有什么特点?

设计一个定时器。要求:

定时时间为24s,按递减方式计时,每隔1s,定时器减1。

设置两个外部控制开关(控制功能),控制定时器的直接复位、启动计时、暂停/连续计时。

当定时器递减计时到零(即定时时间到)时,定时器保持零不变,同时发出报警信号。

输入时钟脉冲的频率为1 Hz,输出为8421

定时器功能表BCD码。

解:逻辑设计,用计数器对1 Hz的时钟信号进行计数,其计数值即为定时时间。根据设计要求可知,电路需要输出2组8421BCD码,计数器初值为24,按递减方式计数,减到0时,输出报警信号,并能控制计数器暂停/连续计数,所以需要设计一个可预置初值的带使能控制端的递减计数器。

实现上述功能的Verilog HDL程序如下。HDL描述分为3部分:第一部分定义了电路的输入、输出信号。其输入信号为复位nRsT(低电平有效)、暂停/连续nPAusE和时钟CP。输出信号为TimerH(定时器的十位)、TimerL(定时器的个位)和报警Alarm。第二部分用一个连续赋值语句assign说明当计数器递减到0时,输出报警信号(Alarm=1)。第三部分用一个过程块always说明计数器的计数、处理操作,计数器的个位和十位均按8421BCD码方式递减计数。

input nRST,nPAUSE,CP; //定时器的输人信号

wire nRST,nPAUSE,CP;

output[3:0]TimerH,TimerL; //定时器的输出信号

reg[3:0]  TimerH,TimerL;

output Alarm; //定时时间到,输出报警信号Alarm=1

assngn Alarm=({TimerH,TimerL}==8’h00)&(nRST==1i b1); //输出报

//警信号

always@(posedge CP or negedge nRST or negedge nPAUsE)  //计数处理

begin

if( ~nRST)

{TimerH,TimerL}c8’h24; //复位时置初值24

eIse if(~nPAUsE)

{TimerH,TimerL}《-{TimerH,TimerL}; //暂停计时

else if({TimerH,TimerL}==8’h00) //定时时间到,保持0不变

begin{TimerH,TimerL}《={TimerH,TimerL};end

else nf(TimerL==4’hO)

begin TimerH 《= TimerHˉ11b1;TimerL 《=4’h9;end

e1se

begin TimerH 《= TimerH;TimerL 《= TimerLˉ1i b1;end

end∶Inodule

设计实现用CPLD器件实现上述设计的过程如下:

在Quartus Ⅱ软件中建立一个新的工程项目,输人上述HDL文件,对设计项目进行编译。

新建一个仿真波形文件,给出输人信号、输出信号的激励波形(图7.5.1中为方便仿真将时钟CP的周期设计为2 ms),对设计项目进行时序仿真,得到如图7.5.1所示的波形。分析波形图可知,开始和16~20 ms时,nRST为低电平,初值24被预置到计数器的输出TimerH、TimerL;4~8 ms时,nPAuSE为低电平,计数器暂停计数;其他时间nRsT、nPAUSE均为高电平,计数器在CP上升沿到来时递减计数,到68 ms之后,计数器一直输出为0,报警信号Alarm为高电平。仿真结果完全符合设计要求。

选定目标器件(例如EPM7032s),将输入、输出信号分配到器件相应的引脚上,然后重新编译设计项目,生成下载文件(文件后缀为,pof或.sof)。

将下载文件写人到目标器件中,就是一块专用的定时器电存储器、复杂可编程器件利明场可编程门阵列.


input nRST,nPAUSE,CP; //定时器的输人信号

wire nRST,nPAUSE,CP;

output[3:0]TimerH,TimerL; //定时器的输出信号

reg[3:0]  TimerH,TimerL;

output Alarm; //定时时间到,输出报警信号Alarm=1

assngn Alarm=({TimerH,TimerL}==8’h00)&(nRST==1i b1); //输出报

//警信号

always@(posedge CP or negedge nRST or negedge nPAUsE)  //计数处理

begin

if( ~nRST)

{TimerH,TimerL}c8’h24; //复位时置初值24

eIse if(~nPAUsE)

{TimerH,TimerL}《-{TimerH,TimerL}; //暂停计时

else if({TimerH,TimerL}==8’h00) //定时时间到,保持0不变

begin{TimerH,TimerL}《={TimerH,TimerL};end

else nf(TimerL==4’hO)

begin TimerH 《= TimerHˉ11b1;TimerL 《=4’h9;end

e1se

begin TimerH 《= TimerH;TimerL 《= TimerLˉ1i b1;end

end∶Inodule

设计实现用CPLD器件实现上述设计的过程如下:

在Quartus Ⅱ软件中建立一个新的工程项目,输人上述HDL文件,对

设计项目进行编译。

新建一个仿真波形文件,给出输人信号、输出信号的激励波形(图7.5.1中为方便仿真将时钟CP的周期设计为2 ms),对设计项目进行时序仿真,得到如图7.5.1所示的波形。分析波形图可知,开始和16~20 ms时,nRST为低电平,初值24被预置到计数器的输出TimerH、TimerL;4~8 ms时,nPAuSE为低电平,计数器暂停计数;其他时间nRsT、nPAUSE均为高电平,计数器在CP上升沿到来时递减计数,到68 ms之后,计数器一直输出为0,报警信号Alarm为高电平。仿真结果完全符合设计要求。

选定目标器件(例如EPM7032s),将输入、输出信号分配到器件相应的引脚上,然后重新编译设计项目,生成下载文件(文件后缀为,pof或.sof)。

将下载文件写人到目标器件中,就是一块专用的定时器电路

http://yushuokj.51dzw.com深圳市裕硕科技有限公司







热门点击

 

推荐技术资料

PCB布线要点
    整机电路图见图4。将电路画好、检查无误之后就开始进行电... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!