当前位置: 首页 > news >正文

佛山网站建设网络公司市场调研问卷调查怎么做

佛山网站建设网络公司,市场调研问卷调查怎么做,凡科建站做的网站收录慢吗,海东高端网站建设价格相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html 对于Verilog HDL而言,有限状态机(FSM)是一种重要而强大的模块,常见的有限状态机书写方式可以分为一段式,二段式和三段式,笔者强烈建议使用三…

相关阅读

Verilog基础icon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12263729.html


        对于Verilog HDL而言,有限状态机(FSM)是一种重要而强大的模块,常见的有限状态机书写方式可以分为一段式,二段式和三段式,笔者强烈建议使用三段式因为这样能使状态机逻辑清晰且易于维护。

        有限状态机有两种基本类型:Mealy机和Moore机。两者的区别在于:Mealy机的下一状态和输出都取决于当前状态和当前输入,而Moore机的下一状态取决于当前状态和当前输入,输出只取决于当前状态。这两类有限状态机的下一状态和输出都是组合逻辑的形式的(指输出不直接来自寄存器的输出),两类状态机的结构如图1、图2所示。

图1 Mealy型状态机

图2 Moore型状态机

        下面以一个简单的例子说明三段式Moore型状态机的书写方式。图3是一个有两个状态的异步复位的Moore机。

图3 一个简单的Moore机 

module top_module (input clk,input in,input rst_n,output reg out
);
parameter A = 0;
parameter B = 1;
reg state, next_state;               //定义寄存器变量保存状态信息//第一段,下一状态组合逻辑
always@(*) begincase (state)                     //根据不同的状态和输入,决定下一时钟周期的状态A: next_state = in ? A : B;B: next_state = in ? B : A;endcase
end//第二段,状态转移时序逻辑
always @(posedge clk, negedge rst_n) beginif (!rst_n)     state <= B;		             //异步复位到状态Belse state <= next_state;			end//第三段,输出组合逻辑
always@(*) beginif(state == B)out = 1;elseout = 0;
end//因为输出比较简单,这里的第三段的输出组合逻辑也可以用assign连续赋值
//但out此时不能定义为reg
//assign out = (state == B);endmodule

        对于Mealy型状态机,因为输出直接受输出影响,可能在某些情况下会出现毛刺(即不在时钟边沿的输出变化),所以可以使用寄存器采集输出。对于Moore型状态机,虽然没有输出毛刺的问题,但也可以使用寄存器采集输出以避免大段组合逻辑输出。图4和图5分别给出了寄存输出的Mealy型状态机和Moore型状态机的结构。

图4 寄存输出的Mealy型状态机

图5 寄存输出的Moore型状态机

        上面两图不难理解,但是一个新的问题出现了,即输出会延后一个周期得到,如果既需要当前周期给出输出,又需要对输出寄存,就不能使用当前状态和输入确定输出,而是应该使用下一状态组合逻辑和输入确定输出。图6和图7给出了这种情况下的Mealy型状态机和Moore型状态机。

图6 寄存输出的Mealy型状态机(下一状态)

 图7  寄存输出的Moore型状态机(下一状态)

        对于Mealy状态机,因为需要状态转移和相应状态的输出同时出现,输出寄存器需要保存由下一状态组合逻辑和的输入推导的输出。对于Moore状态机,输出寄存器需要保存由下一状态组合逻辑推导的输出。

        下面用一个更加复杂的有限状态机为例,说明寄存输出的具体写法。这是一个序列检测器,用于检测输入序列中三个连续的1信号,首先给出Moore型序列检测器的Verilog描述。

module Seq_Rec_Moore(output reg D_out, D_out_r1, D_out_r2, input D_in, En, clk, rst_n);parameter S_idle = 3'd0;parameter S_0 = 3'd1;parameter S_1 = 3'd2;parameter S_2 = 3'd3;parameter S_3 = 3'd4;reg [2:0] state, next_state;//下一状态组合逻辑always@(*)begincase(state)S_idle: if((En == 1)&&(D_in == 1))next_state = S_1;else if((En == 1)&&(D_in == 0))next_state = S_0;else next_state = S_idle;S_0:    if(D_in == 0)next_state = S_0;else if(D_in == 1)next_state = S_1;elsenext_state = S_idle;S_1:    if(D_in == 0)next_state = S_0;else if(D_in == 1)next_state = S_2;else next_state = S_idle;S_2:    if(D_in == 0)next_state = S_0;else if(D_in == 1)next_state = S_3;else next_state = S_idle;S_3:    if(D_in == 0)next_state = S_0;else if(D_in == 1)next_state = S_3;else next_state = S_idle;default:    next_state = S_idle;      endcaseend//状态转移时序逻辑always@(posedge clk, negedge rst_n)beginif(!rst_n)state <= S_idle;elsestate <= next_state;end//输出组合逻辑always@(*) beginD_out = (state == S_3);end//寄存输出always @(posedge clk, negedge rst_n) beginif(!rst_n)D_out_r1 <= 0;elseD_out_r1 <= D_out;end//寄存输出(下一状态)always@(posedge clk, negedge rst_n)beginif(!rst_n)D_out_r2 <= 0;elseD_out_r2 <= (next_state == S_3);end
endmodule

        一个简单的testbench如下所示,图8所示的仿真截图显示了三种不同形式的输出。

`timescale 1ns / 1ns
module t_Seq();reg D_in, clk, rst_n,En;wire D_out, D_out_r1, D_out_r2;Seq_Rec_Moore Seq_Rec_Moore_1 (.D_in(D_in), .clk(clk), .rst_n(rst_n), .D_out(D_out), .En(En), .D_out_r1(D_out_r1), .D_out_r2(D_out_r2));initial beginD_in = 0;clk = 0;rst_n = 1;En = 0;endinitial begin#5 rst_n = 0;#4 rst_n = 1;endalways begin#5 clk = 0;#5 clk = 1;endinitial begin#5 En =1;endinitial begin#5 D_in = 1;end
endmodule

图8 Moore状态机仿真截图 

        下面是Mealy型序列检测器的Verilog描述。

module Seq_Rec_Mealy(output reg D_out, D_out_r1, D_out_r2, input D_in, En, clk, rst_n);parameter S_idle = 3'd0;parameter S_0 = 3'd1;parameter S_1 = 3'd2;parameter S_2 = 3'd3;parameter S_3 = 3'd4;reg [2:0] state, next_state;//下一状态组合逻辑always@(*)begincase(state)S_idle: if((En == 1)&&(D_in == 1))next_state = S_1;else if((En == 1)&&(D_in == 0))next_state = S_0;else next_state = S_idle;S_0:    if(D_in == 0)next_state = S_0;else if(D_in == 1)next_state = S_1;elsenext_state = S_idle;S_1:    if(D_in == 0)next_state = S_0;else if(D_in == 1)next_state = S_2;else next_state = S_idle;S_2:    if(D_in == 0)next_state = S_0;else if(D_in == 1)next_state = S_3;else next_state = S_idle;S_3:    if(D_in == 0)next_state = S_0;else if(D_in == 1)next_state = S_3;else next_state = S_idle;default:    next_state = S_idle;      endcaseend//状态转移时序逻辑always@(posedge clk, negedge rst_n)beginif(!rst_n)state <= S_idle;elsestate <= next_state;end//输出组合逻辑always@(*) beginD_out = (state == S_3)&(D_in == 1);end//寄存输出always @(posedge clk, negedge rst_n) beginif(!rst_n)D_out_r1 <= 0;elseD_out_r1 <= D_out;end//寄存输出(下一状态)always@(posedge clk, negedge rst_n)beginif(!rst_n)D_out_r2 <= 0;elseD_out_r2 <= (next_state == S_3)&(D_in == 1);end
endmodule

 图9 Mealy状态机仿真截图 

一个简单的testbench如下所示,图9的仿真截图显示了如果使用寄存输出,而输入无法维持到下个时钟沿,则会丢失寄存输出信号。

`timescale 1ns / 1ns
module t_Seq();reg D_in, clk, rst_n,En;wire D_out, D_out_r1, D_out_r2;Seq_Rec_Mealy Seq_Rec_Mealy_1 (.D_in(D_in), .clk(clk), .rst_n(rst_n), .D_out(D_out), .En(En), .D_out_r1(D_out_r1), .D_out_r2(D_out_r2));initial beginD_in = 0;clk = 0;rst_n = 1;En = 0;endinitial begin#5 rst_n = 0;#4 rst_n = 1;endalways begin#5 clk = 0;#5 clk = 1;endinitial begin#5 En =1;endinitial begin#5 D_in = 1;#30 D_in = 0;#10 D_in = 1;#37 D_in = 0;end
endmodule

http://www.yidumall.com/news/27604.html

相关文章:

  • 没网站可以做快排吗国际新闻最新消息十条摘抄
  • 怎样做自己的网站和发布网站东莞seo软件
  • dreamware怎么做网站搜索最全的搜索引擎
  • 成都公园城市建设局网站建网站的公司
  • 如何加入小说网站做打字员营销策划方案案例
  • 小门户网站开发武汉seo服务
  • 做程序的网站网站设计软件
  • 宿迁网站制作公司百度一下你就知道下载
  • 网站建设与维护学什么科目成人计算机速成培训班
  • 青海网站建设网站备案是什么意思
  • 做网站所用的技术郑州seo代理公司
  • 网站开发那种语言如何做一个网站的seo
  • 东平网站建设seo搜索优化是什么意思
  • 做网站运营需要具备哪些能力名片seo什么意思
  • 摄影化妆艺术学校网站源码营销推广ppt
  • 替老外做网站域名是什么意思
  • wordpress 主题设置中文版seo外链在线提交工具
  • 怎么建设一个淘宝客网站百度识图搜索引擎
  • 武汉 网站建设产品推广ppt范例
  • 汽车网站建设公司哪家好百度灰色关键词排名技术
  • 西安学校网站制作查淘宝关键词排名软件
  • 每天4元代发广告南宁seo外包靠谱吗
  • 360百度网站怎么做社会新闻热点事件
  • 网页设计与制作项目教程html+css+java课后答案优化营商环境评价
  • seo提升排名福州seo兼职
  • 网站开发代码语言优化大师官方正版下载
  • 网站租用空间价格网络舆情
  • dede中英文企业网站怎么查百度竞价关键词价格
  • 小说网站80电子书怎么做西安seo顾问公司
  • 网站关键词优化怎么做网站排名优化课程