Verilog快速入门(3) —— 奇偶校验

Verilog快速入门

(1) 四选一多路器
(2)异步复位的串联T触发器
(3)奇偶校验
(4)移位运算与乘法
(5)位拆分与运算
(6)使用子模块实现三输入数的大小比较
(7)4位数值比较器电路
(8)4bit超前进位加法器电路
(9)优先编码器电路①
(10)用优先编码器①实现键盘编码电路
(11)8线-3线优先编码器
(12)使用8线-3线优先编码器实现16线-4线优先编码器
(13)用3-8译码器实现全减器
(14)使用3-8译码器①实现逻辑函数
(15)数据选择器实现逻辑函数
(16)状态机
(17)ROM的简单实现
(18)边沿检测



一、题目描述

现在需要对输入的32位数据进行奇偶校验,根据sel输出校验结果(1输出奇校验,0输出偶校验)
在这里插入图片描述

二、解析与代码

1. 奇偶校验

  • 简单理解奇偶校验

奇校验:原始码流+校验位 总共有奇数个1

偶校验:原始码流+校验位 总共有偶数个1

  • 计算奇偶校验的方法

按位求异或得到奇校验结果,对其求反得到偶校验结果

  • 连续进行异或 odd = ^bus 对bus进行异或位操作

2. 代码如下:

`timescale 1ns/1ns
module odd_sel(
input [31:0] bus,
input sel,
output check
);
//*************code***********//

assign check = (^bus)^(~sel);

//or
//even_bit = ^bus;
//odd_bit = ~even_bit;
//check = sel ? even_bit : odd_bit;
//*************code***********//
endmodule
### 关于RS485通信协议的资料教程 #### RS485通信基础概念 RS485是一种串行通信标准,支持多点通信,广泛应用于工业自动化领域。该标准定义了一种平衡双绞线上的差分信号传输方法,能够有效抵抗电磁干扰并允许较长距离的数据传输[^1]。 #### 差分传输特性 数据信号通过一对导线以相反极性发送,在接收端计算两根导线电压之差作为实际信号电平。这种方式不仅提高了抗噪能力还使得RS485能够在长达1200米的距离内可靠工作[^3]。 #### 多节点网络架构 在一个典型的RS485网络中,多个收发器可以通过同一组电缆连接起来形成一个多点拓扑结构。这种设计简化了布线需求同时也降低了成本。为了防止反射波影响正常通讯,通常会在总线两端加上终端匹配电阻。 #### 实验平台实例——STM32F407开发板 正点原子探索者系列中的STM32F407微控制器评估套件提供了现成的硬件资源来进行RS485接口的学习实践。其内置完整的RS485驱动电路以及相应的软件库函数可以帮助初学者快速入门这项技术。 #### FPGA实现案例分析 除了传统的单片机方案外,《基于FPGA的RS485通信接口实验手册》展示了另一种利用可编程逻辑器件构建高效可靠的RS485系统的途径。书中详细描述了一个具体的项目流程,包括原理图绘制、Verilog代码编写直至最终调试验证整个过程[^2]。 #### Modbus协议简介及其重要性 尽管RS485本身只规定物理层参数,但在现代工业环境中它经常搭配更高层次的应用层协议一起使用,比如Modbus RTU就是一种非常流行的组合形式。后者由施耐德电气公司在1979年首次推出,至今仍然是最受欢迎的一种开放式SCADA(监控和数据采集)系统间互操作性的解决方案之一。 ```c // 示例C语言程序片段展示如何配置USART为RS485模式 (适用于STM32CubeMX生成的基础框架) void MX_USART3_UART_Init(void){ huart3.Instance = USART3; huart3.Init.BaudRate = 115200; // 设置波特率 huart3.Init.WordLength = UART_WORDLENGTH_8B; // 字符长度设为8位 huart3.Init.StopBits = UART_STOPBITS_1; // 停止位数设置为一位 huart3.Init.Parity = UART_PARITY_NONE; // 不启用奇偶校验 huart3.Init.Mode = UART_MODE_TX_RX; // 启用全双工模式 /* 配置DE引脚控制 */ GPIO_InitStruct.Pin = GPIO_PIN_DE; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_WritePin(GPIO_PORT, GPIO_PIN_DE, GPIO_PIN_RESET); __HAL_RCC_USART3_CLK_ENABLE(); } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值