【数字IC手撕代码】Verilog模三检测器(判断输入序列能否被三整除)|题目|原理|设计|仿真

这篇具有很好参考价值的文章主要介绍了【数字IC手撕代码】Verilog模三检测器(判断输入序列能否被三整除)|题目|原理|设计|仿真。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球
四社区联合力荐!近500篇数字IC精品文章收录
【数字IC精品文章收录】学习路线·基础知识·总线·脚本语言·芯片求职·EDA工具·低功耗设计Verilog·STA·设计·验证·FPGA·架构·AMBA·书籍

模3器,数字IC手撕代码,verilog,芯片,fpga,面试,硬件架构

一、前言

本系列旨在提供100%准确的数字IC设计/验证手撕代码环节的题目,原理,RTL设计,Testbench和参考仿真波形,每篇文章的内容都经过仿真核对。快速导航链接如下:

1.奇数分频
2.偶数分频
3.半整数分批
4.小数/分数分频
5.序列检测器
6.模三检测器
7.饮料机
8.异步复位,同步释放
9.边沿检测(上升沿,下降沿,双边沿)
10.全加器,半加器
11.格雷码转二进制
12.单bit跨时钟域(打两拍,边沿同步,脉冲同步)
13.奇偶校验
14.伪随机数生成器[线性反馈移位寄存器]
15.同步FIFO
16.无毛刺时钟切换电路

应当说,手撕代码环节是面试流程中既重要又简单的一个环节,跟软件类的岗位相比起来,数字IC的手撕代码题目固定,数量有限,属于整个面试中必得分的一个环节,在这个系列以外,笔者同样推荐数字IC求职者使用“HdlBits”进行代码的训练
链接如下
HDLBits — Verilog Practice

二、模三检测器题目

1.使用verilog代码,设计电路,判断输入序列能否被三整除,能的时候输出1,不能的时候输出0

三、模三检测器的原理

模三检测器的实质是一个判断输入序列的序列检测器
我们可以通过如下的推导过程来进行理解

一个输入被三除,对于余数来说只存在三种可能,分别为0,1,2(被整除,余数为1,余数为2),那么假如0,1,2对应于三种状态,加上IDLE的默认状态,我们需要四个状态,来表示模三检测器的状态机。

但是这里存在一个关键点

即输入序列是一边移位,一边输入,即假如第一位输入1,第二位输入0,在输入第二位的时候,当前输入序列表示为10,即先输入的1,移动到了输入序列的高位处了。

模3器,数字IC手撕代码,verilog,芯片,fpga,面试,硬件架构
这个移位为什么关键呢?

因为这个“第一位输入的1”假如在低位处,模三检测器的余数判断为1,但是假如到了高位,这个模三检测器的余数判断为2,这对于我们能否正确理解状态机的状态跳转有很大的帮助

具体的状态机转换是什么样子的呢?

当前态余数 输入 次态余数 输出
0 1 1 0
0 0 0 1
1 0 2 0
1 1 0 1
2 0 1 0
2 1 2 0

第四行的状态变化再次帮助读者理解移位的奥妙,假如当前状态的余数是1,输入的同时,原序列左移,相当于余数翻倍变为2
此时假如data输入0,余数为2,data输入1,余数是0,可以整除。
这里的“当前态”即状态机中的“state”,“次态”即状态机的“next_state”,可以发现,模三检测器的本质,是一个结合了当前状态和输入序列,来判断输出的mealy型状态机

四、RTL设计

module mod3_check(clk,rst_n,data,test);

input clk;
input rst_n;
input data;
output test;

parameter IDLE =2'b00,
s1 =2'b01,
s2 =2'b10,
s3 = 2'b11;

reg [1:0] state,nstate;

always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
state<=IDLE;
else
state<=nstate;
end


always@(*)
begin
case(state)
IDLE: nstate = data?s1:s3;
s1: nstate = data?s3:s2;
s2: nstate = data?s2:s1;
s3: nstate = data?s1:s3;
default nstate = IDLE;
endcase
end

assign test = state==s3?1:0;

endmodule

五、Testbench设计

`timescale 1ns/1ps
module mod3_check_tb();
reg clk;
reg rst_n;
reg data;
wire test;

mod3_check u1(.clk(clk),.rst_n(rst_n),.data(data),.test(test));

always #5 clk = ~clk;
always #9.99 data = $random;
initial
begin
clk = 0;
rst_n = 1;
data = 0;
#14
rst_n = 0;
#37
rst_n = 1;
end

endmodule

六、结果分析

模3器,数字IC手撕代码,verilog,芯片,fpga,面试,硬件架构

当clk上升沿到来时,首先采到了两个1,test结果输出为1,各状态之间的跳转正常,仿真正确。文章来源地址https://www.toymoban.com/news/detail-596482.html

到了这里,关于【数字IC手撕代码】Verilog模三检测器(判断输入序列能否被三整除)|题目|原理|设计|仿真的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • “01110”双输入口序列检测器的Verilog设计

    设计一个序列检测功能的时序电路,如图所示。其输入信号有clr、clk、A、 B,输出信号Z。其中clk为时钟信号, clr是低电平有效的异步复位信号,A、B是输入数据信号。有一个二进制串行数据D0D1D2D3……Dx,以两位为一组顺序送入电路,D0送入A,D1送到B,以此类推。电路检测此

    2024年02月12日
    浏览(43)
  • 【数字IC手撕代码】Verilog无毛刺时钟切换电路|题目|原理|设计|仿真

    芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区 联合力荐 !近500篇 数字IC精品文章收录 ! 【数字IC精品文章收录】学习路线·基础知识·总线·脚本语言·芯片求职·EDA工具·低功耗设计Verilog·STA·设计·验证·FPGA·架构·AMBA·书籍 本系列旨在提

    2023年04月08日
    浏览(37)
  • 利用Verilog HDL实现序列检测器,附上仿真程序。

    序列检测器的逻辑功能就是将一个指定的比特序列从一串较长的比特流中识别出来。 例如:针对一个较长的比特流010010010011110101010…,我们希望能将比特序列为“10010”的序列检测出来,并且每次检测到10010就将输出置“1”. 注意:如序列”100100100…\\\",根据以上的介绍,会在

    2024年02月06日
    浏览(64)
  • 15.1_使用Verilog设计:一个简单的状态机设计——序列检测器(可实现重复性检测)

    序列检测器的逻辑功能: 序列检测是将一个指定的序列从数字码流中识别出来。本项目要检测的序列是:10010。 设X是“数字码流的输入”,Z是“检出标记输出”;高电平是“实现指定序列”;低电平是“没有发现指定序列”。码流如下表所示。 由上述码流可知:该序列检测

    2024年01月23日
    浏览(40)
  • 数字IC手撕代码-平头哥技术终面手撕真题

     前言:         本专栏旨在记录高频笔面试手撕代码题,以备数字前端秋招,本专栏所有文章提供原理分析、代码及波形,所有代码均经过本人验证。 目录如下: 1.数字IC手撕代码-分频器(任意偶数分频) 2.数字IC手撕代码-分频器(任意奇数分频) 3.数字IC手撕代码-分

    2024年02月05日
    浏览(33)
  • 【opencv】传统目标检测:Haar检测器实现人脸检测

    传统目标分类器主要包括Viola Jones Detector、HOG Detector、DPM Detector,本文主要介绍VJ检测器,在VJ检测器基础上发展出了Haar检测器,Haar检测器也是更为全面、使用更为广泛的检测器。 Viola Jones Detector是作为人脸检测器被Viola和Jones提出来的,后来Rainer Lienhart和Jochen Maydt将这个检测

    2024年02月12日
    浏览(40)
  • 1001序列检测器

    multisim仿真文件:1001序列检测器(mealy机)-单片机文档类资源-CSDN下载 modelsim仿真文件:1001序列检测器modelsim仿真和测试文件-单片机文档类资源-CSDN下载 实验报告:1001序列检测器实验报告-单片机文档类资源-CSDN下载 电 子 科 技 大 学 课程设计名称:           1001 序列检

    2024年02月06日
    浏览(47)
  • OpenCV分类检测器训练

    OpenCV中有两个程序可以训练级联分类器: opencv_haartraining 和opencv_traincascade。opencv_traincascade 是一个新程序,使用OpenCV 2.x API 以C++ 编写。这二者主要的区别是 opencv_traincascade 支持 Haar、Hog和 LBP(Local Binary Patterns) 三种特征,并易于增加其他的特征。与Haar特征相比,LBP特征是整数

    2024年02月17日
    浏览(46)
  • ChatGPT检测器(Detector)

    现阶段可使用的Detector如以下所示,在网页端有5个(3个支持中文),api有3个途径,代码运行成功的有一个。 名称 地址 特性 GPTZero https://gptzero.me/ 支持中英文,判定较为严格,有开源代码 OpenAI GPT2 Output Detector https://openai-openai-detector.hf.space/ 支持中英文,判定宽松 Hello-Simple

    2023年04月27日
    浏览(38)
  • 简易温度检测器电路原理

    在日常生活中,对温度的及时检测能够减免火灾的发生,所以今天就说说温度检测器。 实际功能 在常温下显示数字0,随着温度的升高,数码管逐步显示1、3、8,分别代表三档温度,并且在显示8的时候,LED灯开始闪烁,代表温度过高而报警,当温度下降时,数码管的显示状态

    2024年02月09日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包