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

广州正规的免费建站网站备案建设方案

广州正规的免费建站,网站备案建设方案,百度网址大全网址导航,怎么创建微信小程序店铺相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html 对于Verilog HDL而言#xff0c;有限状态机(FSM)是一种重要而强大的模块#xff0c;常见的有限状态机书写方式可以分为一段式#xff0c;二段式和三段式#xff0c;笔者强烈建议使用三…相关阅读 Verilog基础https://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 3d0;parameter S_0 3d1;parameter S_1 3d2;parameter S_2 3d3;parameter S_3 3d4;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 3d0;parameter S_0 3d1;parameter S_1 3d2;parameter S_2 3d3;parameter S_3 3d4;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.yutouwan.com/news/4160/

相关文章:

  • 大学生校园活动策划书湖北企业网站优化排名
  • 厦门营销型网站建设站长之家ping
  • 论文收录网站广州注册公司迁到佛山可以吗
  • 微信公众号服务号网站开发流程图wordpress文字环绕图片
  • 可以自己做网站的软件国际互联网出口
  • 面向服务的关系建设网站垂直网站建设的关键因素
  • 鄂尔多斯网站制作 建设京东上怎样做网站
  • 网站内部链接是怎么做的帝国网站免费模板
  • 网站后台支持的字体免费pc 微网站模板
  • android应用开发详解杭州seo全网营销
  • h5自适应网站模板下载源码分享网
  • 电商网站页面布局网站流量统计怎么做的
  • 公司网站宣传自己做的灯展怎么给网站做百度优化
  • 做电影网站怎样赚钱吗该网站使用的安全设置
  • 大型网站开发用的技术网站订单模板
  • 企业网站开发哪家专业人员优化方案怎么写
  • 网站分站系上海注册公司需要多少钱
  • 物流信息网站有哪些网游大全
  • 做公司网站的多少钱免费的com域名注册
  • 个人怎么做网站页面ps做图软件怎么下载网站
  • 国外网站视觉设计趋势做网站的例子
  • 安徽城乡建设厅官方网站杭州自助建站模板
  • 网页设计中优秀的网站企业网站主要有哪四种类型
  • 很多搜索词网站怎样做烟台开发区网站
  • 重庆网站优化公司怎么样顶格处罚鼠头鸭脖涉事企业
  • 做婚恋网站多少钱电子商城网站建设的实训内容记述
  • 太原电商网站设计百度自媒体怎么注册
  • 网站内部链接的策略wordpress 图片弹出
  • 网站建设系统有哪些十堰网站建设专家
  • 网站设计应该考虑的重要因素自己做网站seo