M35041-105电路的输出就是触发器的现态
发布时间:2020/1/24 17:02:26 访问次数:2162
m35041-105电量相互进行通信。第一个always语句使用边沿触发事件描述了电路的触发器部分,第二个always语句使用电平敏感事件描述了组合逻辑部分。
第一个always语句说明了异步复位到初始状态s0和同步时钟完成的操作,语句current~state<=next~state;
仅在时钟cp的下降沿被执行,这意味着第二个always语句内部next~state的值变化会在时钟cp下降沿到来时被传送给current~state c第二个anways语句把现态current~state和输人数据data作为敏感变量,只要其中的任何一个变量发生变化,就会执行顺序语句块内部的case语句,跟在case语句后面的各中状态的转换以及输出信号。注意,在mealy型电路定的状态时,如果输入信号a发生变化,则输出信号y
(a,cp,cr,y);
input a,cp,cr;
output y;
reg y;
reg[1:0]current~state,next~state;
parameter so=21b00,s1 =2’bo1,s2=2’b11;
always@(negedge cp or negedge cr)
begin
if(~cr)
current~state <=so; `//initialize to state so
else
current~state <=next~state;
end
always@(current~state or a)
begin
case(current~state)
so:begin yˉ<=0;next~state<=(a~==1)?s1:so;end
s1:begin y<=0;next~state(=(a~==1)?s2:so;end
s2:if(a==1)
begin yˉ(=0;next~state (=s2;end
else
分支项说明了图6,3,7中,当电路处于任何给也会跟着变化。
例6,6,5
//state diagram(fig.6.3.7)
module mealy~sequence~detector
用1/er″og hdl描述时序逻辑电路
begin y(=1; next~state <=so;eˉnd
default:begin y<=0; next~state (=so;end
endcase
end
endmodule
图6.6.1所示状态图的Ⅴerilog描述如例6.6.6所示。它说明仅仅用一个always语句描述状态的转换也是可能的,电路的状态用标识符state表示,在时钟信号cp的上升沿到来时,电路状态的变化用case语句进行描述。电路的输出就是触发器的现态,在两次cp信号的上升沿之间,输人信号data的变化不会影响到输出信号,用assign语句进行说明。
例6,6,6
//moore state diagram(fig.6.6.1)
module moore~md1(data,q,cp,cr);
input data,cp,cr;
output[1:0]q;
reg[1:0]state;
paranleter so=2i b00,s1 =21 bo1,s2=21b10,s3:=2’b11;
always@(posedge cp or negedge cr)
begin
if(~cr)state (=so; //initialize to state so
ense
case(state)
so:if(~data)state (=s1;
s1:if(data)state (=s2;else state <=s3;
s2:if( ~dat。)state <=s3;
s3:if( ~data)state (=so;
endcase
end
assngn q=state; //output of nip-n。ps
endmodule
深圳市唯有度科技有限公司http://wydkj.51dzw.com/
m35041-105电量相互进行通信。第一个always语句使用边沿触发事件描述了电路的触发器部分,第二个always语句使用电平敏感事件描述了组合逻辑部分。
第一个always语句说明了异步复位到初始状态s0和同步时钟完成的操作,语句current~state<=next~state;
仅在时钟cp的下降沿被执行,这意味着第二个always语句内部next~state的值变化会在时钟cp下降沿到来时被传送给current~state c第二个anways语句把现态current~state和输人数据data作为敏感变量,只要其中的任何一个变量发生变化,就会执行顺序语句块内部的case语句,跟在case语句后面的各中状态的转换以及输出信号。注意,在mealy型电路定的状态时,如果输入信号a发生变化,则输出信号y
(a,cp,cr,y);
input a,cp,cr;
output y;
reg y;
reg[1:0]current~state,next~state;
parameter so=21b00,s1 =2’bo1,s2=2’b11;
always@(negedge cp or negedge cr)
begin
if(~cr)
current~state <=so; `//initialize to state so
else
current~state <=next~state;
end
always@(current~state or a)
begin
case(current~state)
so:begin yˉ<=0;next~state<=(a~==1)?s1:so;end
s1:begin y<=0;next~state(=(a~==1)?s2:so;end
s2:if(a==1)
begin yˉ(=0;next~state (=s2;end
else
分支项说明了图6,3,7中,当电路处于任何给也会跟着变化。
例6,6,5
//state diagram(fig.6.3.7)
module mealy~sequence~detector
用1/er″og hdl描述时序逻辑电路
begin y(=1; next~state <=so;eˉnd
default:begin y<=0; next~state (=so;end
endcase
end
endmodule
图6.6.1所示状态图的Ⅴerilog描述如例6.6.6所示。它说明仅仅用一个always语句描述状态的转换也是可能的,电路的状态用标识符state表示,在时钟信号cp的上升沿到来时,电路状态的变化用case语句进行描述。电路的输出就是触发器的现态,在两次cp信号的上升沿之间,输人信号data的变化不会影响到输出信号,用assign语句进行说明。
例6,6,6
//moore state diagram(fig.6.6.1)
module moore~md1(data,q,cp,cr);
input data,cp,cr;
output[1:0]q;
reg[1:0]state;
paranleter so=2i b00,s1 =21 bo1,s2=21b10,s3:=2’b11;
always@(posedge cp or negedge cr)
begin
if(~cr)state (=so; //initialize to state so
ense
case(state)
so:if(~data)state (=s1;
s1:if(data)state (=s2;else state <=s3;
s2:if( ~dat。)state <=s3;
s3:if( ~data)state (=so;
endcase
end
assngn q=state; //output of nip-n。ps
endmodule
深圳市唯有度科技有限公司http://wydkj.51dzw.com/