今天给大侠带来在FPAG技术交流群里平时讨论的问题答疑合集(十八),以后还会多推出本系列,话不多说,上货。
FPGA技术交流群目前已有十多个群,QQ和微信均覆盖,人数达数万人,有需要的大侠可以进群,一起交流学习,共同进步。
欢迎加入FPGA技术微信交流群14群!
交流问题(一)
Q:通信原理 数字基带中定时分量是什么?
A:在通信原理的数字基带中,定时分量是一种用于同步接收端和发送端时钟的特殊信号分量。
一、作用
1. 时钟同步:确保接收端能够准确地确定每个码元的起始和结束位置,从而正确地恢复出原始的数字信号。没有准确的定时,接收端可能会错误地解读码元,导致误码率增加。
2. 提高系统性能:通过提供稳定的定时信息,可以提高数字通信系统的可靠性和效率。例如,在高速数据传输中,精确的定时对于正确接收和解码数据至关重要。
二、产生方式
1. 编码过程中引入:某些数字基带编码方式可以自然地产生定时分量。例如,曼彻斯特编码在每个码元的中间都有一个电平跳变,这个跳变可以作为定时信号。
2. 专门的同步信号:可以在数字基带信号中插入专门的同步信号,这些信号具有特定的波形和特征,接收端可以通过检测这些信号来获取定时信息。
三、提取方法
1. 锁相环技术:接收端可以使用锁相环(PLL)来从接收到的数字基带信号中提取定时分量。PLL 可以跟踪输入信号的频率和相位变化,从而产生与发送端时钟同步的本地时钟信号。
2. 滤波和检测:通过对数字基带信号进行滤波和检测,可以提取出定时分量。例如,可以使用窄带滤波器来选择特定频率的信号分量,然后通过检测峰值或过零点来确定定时信息。
交流问题(二)
Q:有个问题请教下大家,51单片机与fpga用spi通信,不在一个板子上,这个需要用隔离芯片吗?
A:51 单片机与 FPGA 用 SPI 通信且不在一个板子上时,是否需要隔离芯片可以从以下几个方面考虑,仅供参考:
一、电气隔离的必要性
1. 不同电源域:如果两个板子的电源来自不同的电源系统,且存在较大的电位差,那么使用隔离芯片可以防止不同电源之间的干扰和潜在的损坏。例如,一个板子使用 3.3V 电源,另一个板子使用 5V 电源,可能会在通信线路上产生电流回流等问题。
2. 噪声和干扰:如果通信环境中存在较大的噪声源,如电机、高频开关电源等,隔离芯片可以减少噪声对通信信号的影响,提高通信的可靠性。例如,在工业控制环境中,电磁干扰可能会导致通信错误。
3. 安全考虑:在一些对安全性要求较高的应用中,如医疗设备、工业自动化系统等,隔离可以防止故障从一个系统传播到另一个系统,提高系统的安全性。
二、不使用隔离芯片的情况
1. 相同电源域且低噪声环境:如果两个板子使用相同的电源,并且通信环境中噪声较小,那么可以不使用隔离芯片。例如,在实验室环境中,两个板子由同一个稳定的电源供电,且周围没有强干扰源。
2. 成本和复杂性考虑:使用隔离芯片会增加系统的成本和设计复杂性。如果在特定应用中,对通信可靠性的要求不是特别高,且可以通过其他方式(如良好的布线、屏蔽等)减少干扰,那么可以不使用隔离芯片。
总之,是否需要使用隔离芯片取决于具体的应用场景和需求。如果存在电源差异、噪声干扰较大或对安全性有较高要求,那么使用隔离芯片可能是一个较好的选择。如果通信环境较为简单且可靠性要求不高,可以考虑不使用隔离芯片以降低成本和设计复杂性。
交流问题(三)
Q:两个8bit数相减,两个都是补码形式的,如何判断差是否溢出?
A:判断两个 8bit 补码形式的数相减是否溢出,可以依据以下方法,仅供参考:
一、基本原理
对于 8 位有符号数,其取值范围是 -128 到 127。当运算结果超出这个范围时,就发生了溢出。
二、具体判断方法
1. 若两个正数相减得到负数结果,或者两个负数相减得到正数结果,则发生溢出。
• 例如,两个 8 位补码数 64(01000000)和 32(00100000)相减,结果为 32(00100000),正常。但如果是 64(01000000)和 64(01000000)相减,结果为 0(00000000),实际应该为-64(11000000),发生了溢出。
• 又如,两个负数 -64(11000000)和 -32(11100000)相减,结果为-32(11100000),正常。但如果是 -64(11000000)和 -80(10110000)相减,结果为 16(00010000),实际应该为-16(11110000),发生了溢出。
2. 从最高位进位和次高位进位的情况判断:
• 当两数相减时,若最高位进位和次高位进位不同,则发生溢出。
• 例如,计算 120(01111000)减去 40(00101000),最高位进位为 0(因为正数相减不会产生向更高位的进位),次高位进位也为 0(因为次高位没有进位情况发生),结果为 80(01010000),没有溢出。
• 再计算 64(01000000)减去 80(01010000),最高位进位为 1(借位相当于向更高位进 1),次高位进位为 0(因为次高位没有进位情况发生),结果为-16(11110000),正常。但如果是 64(01000000)减去 32(00100000),最高位进位为 0,次高位进位为 1(因为次高位有进位情况发生),结果为 32(00100000),发生了溢出。
今天先整理三个问题答疑,后续还会持续推出本系列。
END
往期精选
FPGA技术江湖广发江湖帖
无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有,QQ微信双选,FPGA技术江湖打造最纯净最专业的技术交流学习平台。
FPGA技术江湖微信交流群
加群主微信,备注姓名+公司/学校+岗位/专业进群
FPGA技术江湖QQ交流群
备注姓名+公司/学校+岗位/专业进群