首页
学习
活动
专区
圈层
工具
发布

Verilog复杂逻辑设计指南-奇偶校验生成器和校验器及筒式移位器

使用Verilog可以方便地实现复杂的设计。现在,设计复杂性增加,设计需要针对低功率、高速和最小面积进行优化~ 在大多数实际的ASIC/FPGA和SOC设计中,Verilog RTL用于描述协议行为。...奇偶校验生成器 示例7.8中描述了高效的Verilog RTL。如RTL中所述,偶数或奇数奇偶校验在输出“q_out”处生成。偶数奇偶校验由逻辑“0”表示,奇数奇偶校验由逻辑“1”表示。...示例7.9用于加法器奇偶校验的Verilog RTL 示例7.10 Verilog RTL使用RTL进行描述,如示例7.9所示。逻辑输入为a、b、add_sub,输出为“p”。...用于复杂设计的Verilog RTL应具有用于数据路径和控制路径的单独模块。 在为逻辑单元编码时使用资源共享概念。所有的逻辑运算都可以通过使用带附加组合逻辑的全加器组件来执行。...编写可综合代码时不要使用函数和任务。 函数不包含延迟或定时控制结构。任务包括时间控制和延迟结构。 奇偶校验生成器用于为数据输入字符串生成偶数或奇数奇偶校验。

1.4K20

Verilog HDL函数与任务的使用

⭐本专栏针对FPGA进行入门学习,从数电中常见的逻辑代数讲起,结合Verilog HDL语言学习与仿真,主要对组合逻辑电路与时序逻辑电路进行分析与设计,对状态机FSM进行剖析与建模。...在编写可综合 RTL时,不建议使用函数。 函数用于编写行为或可仿真模型。 函数不应具有非阻塞赋值。 例 用定义fu3nction与调用function的方法完成4选1数据选择器设计。...(task)说明语句 任务的定义 task 任务名>; 端口与类型说明; 变量声明; 语句1; 语句2; ........语句n; endtask 任务的调用 一个任务由任务调用语句调用,任务调用语句给出传入任务的参数值和接收结果的变量值,其语法如下: 任务名> (端口1,端口2,……,端口n); 关于任务的几点说明...6) 在编写可综合RTL时,不建议使用任务。 7) 任务用于编写行为或可仿真模型。 例:使用任务从给定字符串中计算1的个数。

60140
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    奇偶校验器设计(奇偶校验与奇偶检测,XOR法和计数器法|verilog代码|Testbench|仿真结果)

    图片 --- --- 数字IC经典电路设计 经典电路设计是数字IC设计里基础中的基础,盖大房子的第一部是打造结实可靠的地基,每一篇笔者都会分门别类给出设计原理、设计方法、verilog代码、Testbench...图片 简单理解奇偶校验: 奇校验:原始码流+校验位 总共有奇数个1 偶校验:原始码流+校验位 总共有偶数个1 二、XOR法 2.1 XOR法 题目:采用XOR法试写一个发送端奇偶校验器,在发送端会输入一段...2.2 verilog代码 //使用XOR法设计奇偶校验器 module parity_checker01( input clk, input rst_n...); //使用按位异或确定偶数校验码和奇数校验码 always@(posedge clk or negedge rst_n) begin if(!...3.2 verilog代码 //使用计数器法设计奇偶校验器 module parity_checker02( input clk, input rst_n

    5.8K40

    Verilog中用于时序验证的系统任务

    下列 时序检查语句 错误的是() A. $setup(posedge clk, data, tSU) B. $hold(posedge clk, data, tHLD) C....; (9)recrem 复位信号的恢复/移除时间检查 $recrem(posedge rst, posedge clk, recovery_limit, removal_limit); 四个基础的时序分析...(1)对于时钟和数据信号,分析setup建立时间和hold保持时间 setup 建立时间:在有效的时钟沿来临前,数据需要保持稳定的最短时间,简写为Tsu; hold 保持时间:在有效的时钟沿来临后,数据需要保持稳定的最短时间...,简写为 Th; (2)对于时钟和异步复位信号,分析recovery恢复时间和removal移除时间 recovery 恢复时间:在有效的时钟沿来临前,异步复位信号保持稳定的最短时间; removal...移除时间:在有效的时钟沿来临后,异步复位信号保持稳定的最短时间,在这个时间以后,才可以移除复位信号; FPGA中亚稳态【Tsu建立时间】【Th保持时间】【Tmet决断时间】【recovery恢复时间】【

    2.9K30

    组合逻辑硬件建模设计(二)算术电路

    资源共享和资源利用将在后面讨论 图2.14综合后四位加法器/减法器 比较器和奇偶校验检测器 在大多数实际场景中:比较器用于比较两个二进制数的相等性。奇偶校验器用于计算给定二进制数的奇偶校验。...注:可综合RTL代码中使用逻辑等式和不等式运算符,对于任何操作数为“x”或“z”时,比较结果为false 图2.15综合后的等效比较器 奇偶校验检测器 奇偶校验检测器用于检测二进制数字字符串的奇偶个数...对于偶数个1,输出为逻辑“0”,对于奇数个1,输出为逻辑“1”,则RTL Verilog可以如示例2.16所示进行描述。 示例2.16奇偶校验检测器的可综合Verilog代码。...对于奇数1的输出为逻辑“1”,对于偶数1的输出为逻辑“0”。综合后表示如图2.16所示。 代码转换器 本节介绍设计中常用的代码转换器。...Verilog支持四值逻辑,它们是逻辑“0”、逻辑“1”、未知“x”、高阻抗“z” 在设计中减少加法器的使用。加法器可以使用多路复用器实现。

    1.5K20

    Verilog数字系统基础设计-奇偶校验

    Verilog数字系统基础设计-奇偶校验 奇偶校验是一种简单、实现代价小的检错方式,常用在数据传输过程中。对于一组并行传输的数据(通常为8比特),可以计算岀它们的奇偶校验位并与其一起传输。...奇偶校验包括奇校验和偶校验两种类型。 偶校验和奇校验 对于偶校验,包含校验比特在内,1的总数是偶数。在奇校验中,1的总数则为奇数。...例如: data_in[7:0]=1010_1011 在该数据串中有5个1,偶校验时,校验结果为1,这样1的总个数为偶数;在奇校验时,校验比特为0,使得1的总个数为奇数。...又如: data_in[7:0]=0000_1111 在该数据串中有4个1,偶校验时,校验结果为0,使得1的总个数仍为偶数;在奇校验时,校验比特为1,使得1的总个数为奇数。...奇偶校验常常用在芯片内部数据传输或者外部数据总线上的数据传输中,如传统的PCI总线中就使用了奇偶校验。

    1.9K20

    Verilog中generate的使用

    Verilog中的generate语句常用于编写可配置的、可综合的RTL的设计结构。它可用于创建模块的多个实例化,或者有条件的实例化代码块。...Verilog中的generate块创建了新的作用域和新的层次结构,就像实例化模块一样。因此在尝试对generate块中的信号进行引用时,很容易因此混乱,因此请记住这一点。...1.generate循环结构 generate循环的语法与for循环语句的语法很相似。但是在使用时必须先在genvar声明中声明循环中使用的索引变量名,然后才能使用它。...Verilog中generate循环中的generate块可以命名也可以不命名。如果已命名,则会创建一个generate块实例数组。...前面也提到过,使用generate会产生层次化,并且选择的模块或者产生的模块都会具有一个名称。

    5.8K11

    题解 | Verilog刷题解析及对应笔试面试注意点【1-5】(涉及复位、有符号数问题等)

    条件分支n: xxx; 缺省default: xxx; endcase case的使用注意点: (1)要在always块里使用,如果是用always块描述组合逻辑,注意括号里的敏感变量列表都是电平触发,...题目 用verilog实现对输入的32位数据进行奇偶校验,根据sel输出校验结果(sel=1输出奇校验,sel=0输出偶校验)。...解析 2.1 奇偶校验 通常所说的奇偶校验: 奇校验:对输入数据添加1位0或者1,使得添加后的数包含奇数个1; 比如100,有奇数个1,那么奇校验结果就是0,这样补完0以后还是奇数个1; 奇校验:对输入数据添加...1位0或者1,使得添加后的数包含偶数个1; 回到这个题目,应该是出题人搞反了,按照出题的意思,应该不能叫奇偶校验,应该是叫奇偶检测: 奇检测:输入的数据里有奇数个1就输出1; 偶检测:输入的数据里有偶数个...单目运算符使用时,输入的数据的每一位进行运算,最后结果一定是1 bit的。 用处: 3.

    1.2K20

    HDLBits:在线学习Verilog(八 · Problem 35-39)

    ,并附上解答和一些作者个人的理解,相信无论是想 7 分钟精通 Verilog,还是对 Verilog 和数电知识查漏补缺的同学,都能从中有所收获。...三个二选一的MUX组成的最小值电路,但电路的具体实现视综合器描述,如果可以使用四选一MUX也可能使用到。...构建一个电路,计算8位字节输入的校验位(将向该字节添加第9位)。我们将使用偶校验,其中奇偶校验位只是所有8个数据位的XOR。...但是我这里要说的不是答案,而是关于奇偶校验器,数字电路的初学者来说,对教材上给出的奇偶检验器的计算方式可能有些迷惑,什么是奇校验,什么是偶校验。...奇偶校验是检验传输数据中1的个数,当然有奇数有偶数,,这时候就需要用我们的校验位了,通过检验位将传输1的个数变成奇数就是奇校验,变成偶数就是偶校验。

    86520

    详解串行通信协议及其FPGA实现(一)

    对于硬件橡皮泥——FPGA来说,需要使用HDL从底层串口数据帧来实现,可以直接在任意一个引脚实现串口功能。为了用Verilog HDL实现标准的串口通讯协议,我们有必要先来详细了解一下串口通讯协议。...奇校验要求有效数据和校验位中“1”的个数为奇数,比如一个8位长的有效数据为:01101001,此时共有4个“1”,为达到奇数个"1"的效果,校验位为“1”,让“1”的个数变成5个(奇数)。...一般是奇偶校验或者是无校验位。...奇偶校验的Verilog实现 在Verilog中奇偶校验的计算非常简单,根据奇偶校验的原理,偶校验为数据位各位异或,奇校验是偶校验取反,通过使用单目运算符的缩减功能,可以非常简单的计算奇偶校验位: input...标准串口协议的Verilog实现 基于Verilog实现标准串口协议发送8位数据:起始位 + 8位数据位 + 校验位 + 停止位 = 11位,每1位的时间是16个时钟周期,所以输入时钟应该为:波特率*16

    3K10

    Verilog:笔试面试常考易错点整理

    ,从而加速大型数字系统的设计、调试等工作 Verilog的行为级描述方法可以简化硬件电路的设计,可借助于高级语言的精巧结构 Verilog支持开关级、门级、RTL级、算法级、系统级设计 2.阻塞赋值和非阻塞赋值的区别...是一个同时赋值的操作,并行执行,用于时序逻辑的设计 3.为什么用于综合的verilog不建议使用for循环?...、#)这样的语句,要保证函数的执行在零时间内完成 调用其他任务和函数 可以调用其他任务和函数 只能调用函数,不能调用任务 返回值 没有返回值 只有一个返回值 其他说明 任务调用语句可以作为一条完整的语句出现...奇偶校验位是在一串二进制码的最后添加的一位,它使得整个二进制串的1的个数为奇数或者偶数。因此奇偶校验分为两种,奇校验和偶校验。 计算校验位需要对二进制码中的1进行计数。...如果1的数量为奇数,并且使用偶校验,则校验位为1,使得整体1的个数为偶数。如果1的数量为偶数,并且使用偶校验,则校验位为0,使得整体1的个数为偶数。奇校验类似。

    2.5K41

    pullup和pulldown在verilog中的使用方法

    _的介绍pullup和pulldown并非是verilog的内置原语,仅在仿真或综合过程中起作用,用来设置信号的默认状态在实际的硬件电路中,用来代表上拉和下拉,就比如在...I2C中,SCL和SDA两个信号是open-drain的,在实际使用过程中往往需要接上拉电阻,如下图图片接在VCC的两个电阻就是上拉电阻,这个上拉电阻在verilog中就可以用pullup表示下面结合实例来看看怎么使用...2 不使用pullup和pulldown的情况`timescale 1ns/10psmodule tb; logic dout; logic sel; assign dout = sel...0时输出0,在initial·中对sel先后赋值0和1,来看看运行结果图片可以看到当sel = 0时,dout = 0,当sel = 1时,dout = z,这个结果符合预期注意,在这个例子中,并没有使用到...pullup,下面给出使用pullup的例子2 使用pullup和pulldown的情况`timescale 1ns/10psmodule tb; logic dout; logic sel;

    2.8K00

    【计算机网络】考研408 | 数据链路层的“安全卫士”:探秘检错编码之奇偶校验码

    它由 n - 1 位数据和 1 位检验位组成,检验位的取值(0 或 1)将使整个检验码中 1 的个数为奇数或偶数: 奇检验码:附加一个检验位后,n 位的码字中 1 的个数为奇数; 偶检验码:附加一个检验位后...+ 信息位; 检验位 放在 信息位 的后面,那么构成的 奇偶校验码 为:信息位 + 检验位; 上面所展示的是 信息位 + 检验位 通信双方可以根据具体使用的 校验码 所得到的 异或值 来判断数据是否存在错误...: 当通信双方规定均使用 奇校验码 时,那么通过 异或 运算获取的 信息位 + 检验位 的异或值为:\bm{1} 当通信双方规定均使用 偶校验码 时,那么通过 异或 运算获取的 信息位 + 检验位...; 2.3 局限性 奇偶校验码 虽然能够检测比特在传输的过程中是否存在问题,但是也仅限于该功能,因此 奇偶校验码 在具体的使用过程中会存在以下问题: 无法确定比特在传输的过程中,具体是哪一位发生了差错...我们聚焦于奇偶校验码,揭示了其如何通过精巧的设计,将复杂的检错任务简化为对数据中“1”的个数的奇偶性判断。这种利用简单硬件(如异或门)即可实现高效检错的思路,体现了工程学的优雅。

    19010

    一文搞懂UART通信协议

    当接收 UART 检测到高到低电压跃迁时,便开始以波特率对应的频率读取数据帧中的位。 3.2、数据位 数据帧包含所传输的实际数据。如果使用奇偶校验位,数据帧长度可以是5 位到 8 位。...如果不使用奇偶校验位,数据帧长度可以是9 位。 在大多数情况下,数据以最低有效位优先方式发送。 3.3、奇偶校验位 奇偶性描述数字是偶数还是奇数。...接收UART 读取数据帧后,将统计数值为 1 的位,检查总数是偶数还是奇数。如果奇偶校验位为0 (偶数奇偶校验),则数据帧中的1或逻辑高位总计应为偶数。...如果奇偶校验位为 1 (奇数奇偶校验),则数据帧中的1 或逻辑高位总计应为奇数。 当奇偶校验位与数据匹配时,UART 认为传输未出错。...但是,如果奇偶校验位为0 ,而总和为奇数,或者奇偶校验位为 1 ,而总和为偶数,则UART 认为数据帧中的位已改变。

    20.3K52

    奇偶校验原理,三种方式实现

    奇偶校验位介绍 奇偶校验位是一种用于检测和纠正数据传输中出现的错误的机制。在数据传输过程中,数据被分割为固定大小的块,一般为一字节(8 位)。...每个字节都会附加上一个奇偶校验位,用于表示该字节中 1 的个数是奇数还是偶数。 在奇偶校验位中,如果数据字节中 1 的个数是奇数,则校验位被设置为 1;如果是偶数,则校验位被设置为 0。...// data: 待校验数据 // return:data中1的数目为奇数,返回true,否则返回false。...// data: 待校验数据 // return:data中1的数目为奇数,返回true,否则返回false。...接收方使用重新计算的结果与接收到的校验位进行比较。 如果重新计算的结果与接收到的校验位相等,则数据块没有错误。 如果重新计算的结果与接收到的校验位不相等,则说明数据块中发生了错误。

    1.5K10

    软考高级架构师:校验码概念和例题

    校验码技术 基本原理 特点 应用场景 奇偶校验 通过添加一个额外的比特来使得整个数据单元中1的数量为奇数(奇校验)或偶数(偶校验) 实现简单,但错误检测能力有限 适用于错误率较低的简单通信系统 循环冗余检验...)中1的数量为奇数或偶数。...最常见的海明码能够定位和纠正单个错误位,以及检测双错误位。 二、AI 出题 (1)题目 奇偶校验能够检测出的错误是? A. 奇数个错误 B. 偶数个错误 C. 所有错误 D....数据可能有偶数个错误 对于同一份数据,使用不同的校验码技术,下列说法正确的是? A. 海明校验的校验位数最少 B. CRC校验的错误检测能力最弱 C. 奇偶校验的实现成本最低 D....需要结合多种技术使用 (2)答案和解析 A. 奇数个错误。奇偶校验只能检测出奇数个错误。 B. 生成多项式。CRC的核心是使用特定的生成多项式来计算校验值。 C. 错误的检测和定位。

    67701

    【计算机网络】数据链路层 : 差错控制 ( 检错编码 | 奇偶校验码 | CRC 循环冗余码 )★

    ---- 奇偶校验码 组成 : ① 信息元 : n-1 位 ; 要发送的有效数据 ; ② 校验元 : 1 位 ; 冗余码 ; ③ 奇校验码 : 1 的个数为 奇数 ; 冗余位 1 ;...④ 偶校验码 : 1 的个数为偶数 ; 冗余位 0 ; 二、 奇偶校验码 特点 ---- 奇偶校验码 特点 : 该编码方法 , 只能检查 奇数个 比特错误 , 如果有 偶数个比特错误 , 无法检查出来..., 检错率是 50\% ; 三、 奇偶校验码 示例 ---- 奇偶校验码 示例 : 传输 字符 ‘S’ 的 ASCII 码 1100101 , 使用 奇校验码 , 在 数据前 添加 1 位...冗余位 1 , 表明 1 的个数为奇数 , 上述数据的 1 的个数为 5 个 , 是奇数个 ; 奇数个错误 : 如果接受到的数据中 1 的个数是 偶数个 , 此时就能检测出数据错误...① 要传输的数据 : 5 ; ② 生成多项式 : 2 ; ③ 计算冗余码 : 使用 \cfrac{要传输的数据}{生成多项式} = \cfrac{5}{2} , 商是 2 , 余数是

    3.8K00

    MySql 定时任务的使用

    简介   自 MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录、对数据进行汇总等等),来取代原先只能由操作系统的计划任务来执行的工作...更值得一提的是MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精确到每分钟执行一次。...对于一些对数据实时性要求比较高的应用(例如:股票、赔率、比分等)就非常适合。 操作: 1,开启event_scheduler计划。...#查看所有数据库中所有事件 #法1 select * from mysql.event; #法2 select * from information_schema.events #创建定时任务...student values(2,'xiaoli','noaddr','nocomment'); insert into student select * from student; #2创建定时清理任务

    2.6K40

    Celery的使用完成异步任务与定时任务

    0917自我总结 Celery的使用 一.官方文档 Celery 官网:http://www.celeryproject.org/ Celery 官方文档英文版:http://docs.celeryproject.org...包括,RabbitMQ, Redis等等 任务执行单元 Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中。...任务结果存储 Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP, redis等 使用场景 异步任务:将耗时操作任务提交给Celery...crontab(hour=8, day_of_week=1), # 每周一早八点 'args': (300, 150), } } #上述文件均在配置文件中 8.django中的使用...:自动添加任务,所以要启动一个添加任务的服务 # 命令:celery beat -A celery_task -l info # 4)获取结果 }

    1.3K10

    只有使用 ACL 的 通配符掩码 才可以使用一条语句就可以 匹配出,奇数vlan的网段和 偶数vlan的网段,odd 奇数, even 偶数

    大家好,又见面了,我是你们的朋友全栈君。 只有使用 ACL 的 通配符掩码 才可以使用一条语句就可以 匹配出,奇数vlan的网段和 偶数vlan的网段,odd 奇数, even 偶数!...方法如下: access-list 1 permit 192.168.1.0 0.0.254.255 这条语句就是匹配的是奇数vlan的 网段 ,–是数据层面,所以最后一位反掩..., 利用访问列表的 反掩码 来匹配特定位为1和0 来区分奇数和偶数, 分析: 第三网段为奇数,和第三网段为偶数,有一个很明显的区分就是 最后一位为1就为奇数,为0就是偶数,...00000000 分别对应的是 二进制换位点分十进制, 为 128 64 32 16 8 4 2 1 这8位, 只有最后一位是奇数,所以只要最后一位为1 ,前面7位不管是0 还是1 加起来都是...奇数, 反之亦然。

    1.8K20
    领券