PSN0503083同步十进制计数器
发布时间:2019/10/19 16:49:23 访问次数:723
PSN0503083非二进制计数器,例6.6,4描述了一个带有异步置零功能的同步十进制计数器。当清零信号CR跳变到低电平(由negedge CR描述)时,计数器的输出被置零;否则,当CR=1,且使能信号CE=1时,在CP的上升沿作用下,若计数值大于或者等于9,计数器的输出被置零;若计数值小于9,则计数器的值加1。当CR=1,但CE=0时,计数器保持原来的状态不变。注意,电路的功能描述与具体的硬件电路结构是无关的。
例6.6.4
//Non-iBinarv counter lW・ith enable
m.odule m10~counter(CE,CP,CR,Q);
input CE,CP,CR~;
output[3:0]Q; //Data。utput
reg[3:0]Q; :
always@(posedge CP or negedge CR)
if(~CR)Q<=4’b0000;
else if(CE)
begin if(Q) =41b1001)Q|<=4.b0000;
else Q(=Q+1’b1;
end
else Q<=Q;
emdnn.odule
状态图的Veri|og建模用Vern。g描述状态图是十分方便的,可以直接写出描述语句。描述状态图的方法很多,最常用的是利用always语句和case语句。图6.3.7所示是一个有3个状态的状态图,可用于检测连续输人序列110,它的Verilog描述如例6.6.5所示。其中用通常的方法定义了电路的输人、输出、时钟以及清零信号,保存着电路状态值的触发器用标识符current~state、next~state进行定义,并使用参数定义语句parameter定义了电路的三种状态,即sO=2’b00、s1=2i bO1和S2=2’b11。注意,虽然使用S2=3的形式定义状态在语句上是正确的,但存储“3”这个整数至少要使用32位寄存器,而存储21b11只需要2位寄存器,所以例题中使用的定义方式更好一些。
电路的功能描述使用了两个并行执行的always结构型语句,通过公用变量相互进行通信。第一个always语句使用边沿触发事件描述了电路的触发器部分,第二个always语句使用电平敏感事件描述了组合逻辑部分。
PSN0503083非二进制计数器,例6.6,4描述了一个带有异步置零功能的同步十进制计数器。当清零信号CR跳变到低电平(由negedge CR描述)时,计数器的输出被置零;否则,当CR=1,且使能信号CE=1时,在CP的上升沿作用下,若计数值大于或者等于9,计数器的输出被置零;若计数值小于9,则计数器的值加1。当CR=1,但CE=0时,计数器保持原来的状态不变。注意,电路的功能描述与具体的硬件电路结构是无关的。
例6.6.4
//Non-iBinarv counter lW・ith enable
m.odule m10~counter(CE,CP,CR,Q);
input CE,CP,CR~;
output[3:0]Q; //Data。utput
reg[3:0]Q; :
always@(posedge CP or negedge CR)
if(~CR)Q<=4’b0000;
else if(CE)
begin if(Q) =41b1001)Q|<=4.b0000;
else Q(=Q+1’b1;
end
else Q<=Q;
emdnn.odule
状态图的Veri|og建模用Vern。g描述状态图是十分方便的,可以直接写出描述语句。描述状态图的方法很多,最常用的是利用always语句和case语句。图6.3.7所示是一个有3个状态的状态图,可用于检测连续输人序列110,它的Verilog描述如例6.6.5所示。其中用通常的方法定义了电路的输人、输出、时钟以及清零信号,保存着电路状态值的触发器用标识符current~state、next~state进行定义,并使用参数定义语句parameter定义了电路的三种状态,即sO=2’b00、s1=2i bO1和S2=2’b11。注意,虽然使用S2=3的形式定义状态在语句上是正确的,但存储“3”这个整数至少要使用32位寄存器,而存储21b11只需要2位寄存器,所以例题中使用的定义方式更好一些。
电路的功能描述使用了两个并行执行的always结构型语句,通过公用变量相互进行通信。第一个always语句使用边沿触发事件描述了电路的触发器部分,第二个always语句使用电平敏感事件描述了组合逻辑部分。