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

Verilog刷题笔记54

题目:
Fsm serialdp
See also: Serial receiver and datapath

We want to add parity checking to the serial receiver. Parity checking adds one extra bit after each data byte. We will use odd parity, where the number of 1s in the 9 bits received must be odd. For example, 101001011 satisfies odd parity (there are 5 1s), but 001001011 does not.
在这里插入图片描述

官方提供的例化程序:

module parity (input clk,input reset,input in,output reg odd);always @(posedge clk)if (reset) odd <= 0;else if (in) odd <= ~odd;endmodule解题:
module top_module(input clk,input in,input reset,    // Synchronous resetoutput [7:0] out_byte,output done
); //parameter idle=0,data_receive=1,check=2,stop=3,error=4;reg [2:0]state,next_state;reg [7:0]data;wire odd_temp,start;reg [3:0]cnt;reg jo;parity parity_inst(.clk(clk),.reset(reset|start),.in(in),.odd(odd_temp));always@(posedge clk)beginif(reset)state<=idle;elsestate<=next_state;endalways@(*)beginstart=0;case(state)idle:begin next_state=in?idle:data_receive;start=1;enddata_receive:next_state=(cnt==8)?check:data_receive;check:next_state=in?stop:error;stop:begin next_state=in?idle:data_receive;start=1;enderror:next_state=in?idle:error;endcaseendalways@(posedge clk)beginif(reset)cnt<=0;else case(state)data_receive:cnt<=cnt+1;default:cnt<=0;endcaseendalways@(posedge clk)beginif(reset)data<=0;else case(next_state)data_receive:data<={in,data[7:1]};endcaseendalways@(posedge clk)beginif(reset)jo<=0;elsejo<=odd_temp;endassign out_byte=data;assign done=jo&(state==stop);// Modify FSM and datapath from Fsm_serialdata// New: Add parity checking.endmodule

结果正确:
在这里插入图片描述

总结:
多了个奇偶校验
为了方便例化程序的重新启用,所以减去了一个start状态,直接将start定义成一个变量。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • PowerShell 一键配置IP
  • TMS核心架构与功能模块解析
  • Java-一个接口查询没有值,需要多次调用直到有值,怎么解决?
  • python——数据分析
  • 短视频SDK解决方案,Flutter赋能,跨平台无缝体验
  • Docker私人学习笔记
  • python——concurrent.futures
  • SAP凭证分割【Document Splitting】
  • wsl2 airsim wairing for connect (Windows11 UE4.27)问题解决
  • 惠海H4312 dcdc同步整流降压恒压IC 30V 40V转3.3V/5V/12V小体积大电流单片机供电
  • Zimg:轻量级图片服务器的高性能解决方案
  • C# Stack
  • Spring的核心启动流程
  • yas源码解析 之 hexdump打印二进制
  • PostgreSQL的pg_dump中 --inserts参数测试
  • ES6指北【2】—— 箭头函数
  • 4个实用的微服务测试策略
  • Apache的基本使用
  • Computed property XXX was assigned to but it has no setter
  • CSS居中完全指南——构建CSS居中决策树
  • flutter的key在widget list的作用以及必要性
  • GitUp, 你不可错过的秀外慧中的git工具
  • interface和setter,getter
  • JWT究竟是什么呢?
  • MaxCompute访问TableStore(OTS) 数据
  • Promise面试题2实现异步串行执行
  • SpiderData 2019年2月13日 DApp数据排行榜
  • sublime配置文件
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 如何实现 font-size 的响应式
  • 手写双向链表LinkedList的几个常用功能
  • 想写好前端,先练好内功
  • 小李飞刀:SQL题目刷起来!
  • 写代码的正确姿势
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #define、const、typedef的差别
  • #if 1...#endif
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (52)只出现一次的数字III
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (三分钟)速览传统边缘检测算子
  • *1 计算机基础和操作系统基础及几大协议
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .java 9 找不到符号_java找不到符号
  • .NET Core MongoDB数据仓储和工作单元模式封装