位置:51电子网 » 电子资讯 » 行业动态

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/


热门点击

推荐电子资讯

Chrome 31:iOS版发布
iOS版Chrome 31主要更新:   “Au... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式