FPGA面试题

2023-11-05

面试题摘自尤老师FPGA 。

1

在这里插入图片描述

2

在这里插入图片描述

TPLH:脉冲由低电平变成高电平的延迟时间
TPHL: 脉冲由高电平变成低电平的延迟时间

本题采用假设法,假设开始输入信号为高电平,经过两次非门是一个时钟周期 (TPHL+TPLH = 0.2 ns) ,震荡周期意思为下次到达起始位置时的电平信号与第一次到达起始位置的电平信号相同时所花的时间。
所以跑完一轮是2.5个时钟周期,此时回到起始位置为低电平,与第一次开始的高电平不等,故还要经过一轮;总共经过两轮也就是五个时钟周期才满足一个震荡周期。所以震荡周期为 0.2 * 5 = 1 ns 。

图解法 :

在这里插入图片描述

3

在这里插入图片描述

4

在这里插入图片描述

5 task 和 function 关系

在这里插入图片描述

function 语法 :

function function的信号名 (相当于输出信号)
输入信号定义
(逻辑语法)
返回值 (指定信号 = …)
endfunction

注意 : function 只能是组合逻辑,不可以是时序逻辑 。不能加时延 。 function 中不能去调用 task 。

task 语法 :

task 中 使用 always @ (posedge clk) 和 使用 @ (posedge clk) 的区别 :

always@(posedge clk)中的任务没有执行完的情况下是不会在下一个时钟上升沿到来的时候再次重复执行的

在前面不带always的情况下,@(posedge)仅会按顺序执行一次。即在 task 语句中如果有多个 @ (posedge clk) 语句,那么在每个时钟上升沿到来时就按照顺序执行 @ (posedge clk) 的一行 。

在这里插入图片描述

task 语法 :
task
输入输出信号定义
逻辑赋值 (图中是经过 0.1 ns 延迟后再赋值)
endtask

调用方式:

本工程是在 initial 块中调用
在这里插入图片描述
例化 function 方法中 需要赋值输入信号的形参,将 function 的结果赋值给输出信号 。
例化 task 的方法中将输入信号和输出信号都要赋值到 task 的形参中去 。注意输出信号赋值的位置即可 。

在这里插入图片描述

在这里插入图片描述

6 CRC 问题

CRC校验 : 循环冗余校验的缩写

6.1 举例说明 :

CRC 可以理解为校验发送数据 和 接收数据之间的误差(有无错误)。在这里插入图片描述

6.2 CRC 生成多项式

在这里插入图片描述

6.2.1 生成多项式用到二进制异或除法

6.2.2 求解校验位过程 :

题中的生成多项式的最高次幂 表示校验位的位宽 。
四位原始报文为 信息位 。
编码后的报文 = 信息位 与 校验位 的 组合 。

6.2.3解题方法

题中生成多项式最高次幂 = 校验位位宽 = 3
信息位 = 原始报文 = 1010
信息位低位添0 (增加个数为校验位位宽大小) = 1010 000
之后该数进行异或 后 除生成多项式 ; 直到余数小于等于 3 位后得到校验位 。

(1) 生成多项式求法

G(X) = X^3 + X + 1
生成多项式的最高次幂 + 1 = 生成多项式位宽 (本题为4位)

生成多项式 G(X) 中 :
X^3 的系数 = 1 第四位
X^2 的系数 = 0 第三位
X^1 (X) 的系数 = 1 第二位
X^0 (1) 的系数 = 1 第一位

故生成多项式为 1011 (即生成多项式的另一种表现形式) = X^3 + X + 1

(2) 异或计算

信息位添 0 后的数 异或 生成多项式


1010 000
1011
异或等于
0001 000
1 011
异或等于
0 011

故校验位为 011 (3位)

编码后的报文 = 信息位 (1010) + 校验位 (011) = 1010011

7

在这里插入图片描述
always @ (*) 组合逻辑,当其运算式子中的 任一信号发生改变,就触发逻辑块中的代码进行计算 。本题中 a 和 b 的值都发生变化,所以 b 和 c 也都进行计算得到新值 。 (按照先后顺序计算)

always @ (posedge clk) 时序逻辑,是在时钟上升沿后触发。
所以 b 和 c 的值是在时钟上升沿之后才得到的计算后的值 。

8

在这里插入图片描述

9

在这里插入图片描述

首先说明“由于国家标准规定,逻辑图中最低有效位(LSB)到最高有效位(MSB)的电路排列顺序应从上到下,从左到右。因此定义移位寄存器中的数据从低位触发器移向高位为右移,反之则为左移。这一点与通常计算机程序中规定相反,后者从自然二进制数的排列考虑,将数据移向高位定义为左移,反之为右移。”此内容摘自《电子技术基础-数字部分》康华光主编教材。

图示为:
9 级 移位寄存器,即由九个移位寄存器组成的 将位宽为九的数据进行左移移位操作的电路。经复位后的数据为 9’b1_1111_1111,第一个移位寄存器从输入的第0位数据开始移位到第1位,第二个移位寄存器将第1位数据右移到第2位,以此类推。其中将第4位和第8位进行异或操作后的数赋值给经过移位后的数据的第0位。将经过以为后的数据的第6位赋值给输出的数据 pi 。

代码实现如下 :

在这里插入图片描述

10

题目及其解读如下图 :

在这里插入图片描述

信号波形图解如下图所示 :

在这里插入图片描述
本题考验对时序设计的理解,尤其是触发器概念的理解。时序信号 (触发器内信号) 的判定为在时钟上升沿到来前进行逻辑判断,在时钟上升沿到来后进行当前输出信号赋值。

in_dat_dly1 和 in_dat_dly2 都是 reg 型信号,采用时序逻辑进行赋值 (本题中是对 in_dat 进行延迟 1 clk 赋值给 in_dat_dlly1 , 对 in_dat 延迟 2 clk 赋值给 in_dat_dly2) 。

out_dat_reg 是 reg 型信号,用来判断 in_dat_dly1 和 in_dat_dly2 的时序逻辑 。

注意 : 时序逻辑中异步复位的写法
always @ (posedge clk or negedge rst_n) begin
逻辑语句块
end
ps : rst_n 为 低电平复位信号

具体代码如下 :

在这里插入图片描述
tb 代码如下图所示 :

在这里插入图片描述

仿真波形图所下图所示 :

在这里插入图片描述

11

问答题

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FPGA面试题 的相关文章

  • 基于FPGA的频率计设计

    文章目录 写在前面 1 什么是频率计 2 测量方法与基本原理 3 待测信号如何输入FPGA 一 实验程序 1 RTL图 2 Verilog 参考设计 3 指派引脚 二 调试验证 输入不同频率的方波 写在前面 1 什么是频率计 频率计是一种专
  • SmartFusion从FPGA到ARM(四)——MSS_TIMER定时器的使用

    文章目录 1 定时器资源简介 2 MSS TIMER库函数简介 3 简单的周期性中断 4 自定义产生波形 5 64位定时器的使用 6 单次中断模式 系列教程 SmartFusion从FPGA到ARM系列教程 1 定时器资源简介 SmartF
  • cdc多bit信号-握手处理

    对于多bit数据跨时钟 各个bit之间路径延迟不一样 源时钟域给的数据是2 b11 目的时钟域采样到的数据可能2 b10 因此两级触发器对于单bit数据跨时钟是可以用的 但是对于多bit数据跨时钟就会出错 握手处理的关键是利用源的时钟req
  • verilog中wire和reg类型的区别

    module counter parameter CNT MAX 25 d24 999 999 input wire sys clk input wire sys rst n output reg led out reg 24 0 cnt
  • 最详细的Vivado安装教程

    V i v a d o 安 装
  • Verilog实现两路组相联cache

    cache代码 timescale 1ns 1ps cache共32块 分为16组 每组2块 即两路组相联 1块 4字 1字 4字节 主存共1024块 4096个字 主存地址共12位 1 0 为块内偏移 5 2 为组地址 11 6 为Tag
  • Verilog之assign

    Verilog中的关键词assign主要用于如下两个地方 数据流建模 用于数据流建模的显示连续赋值语句语法格式如下
  • HDLBits刷题_Verilog Language_Procedures_Alwaysblock1

    学习内容 Since digital circuits are composed of logic gates connected with wires any circuit can be expressed as some combin
  • 采用Vivado 配置xilinx GTX的SATA设计

    从Vivado开始 配置GTX的时候 多了一个SATA协议支持 但有些小地方还需要自己另外设置 整理了一下 分享给大家 首先打开Transceivers wizard 打开页签 线速率和参考时钟选择 在协议里面选择SATA2或者SATA3
  • [HDLBits] Exams/ece241 2014 q7a

    Design a 1 12 counter with the following inputs and outputs Reset Synchronous active high reset that forces the counter
  • FPGA实现VGA显示图片

    利用FPGA在带有VGA接口的液晶显示器上显示图片 电路原理图 端口说明 VGA R2 VGAB0的8个端口位VGA的RGB数据位 VGA HS为行同步信号 VGA VS为场同步信号 以分辨率为640x480为例 刷新速率为60Hz 每幅图
  • FPGA功耗估计(二)

    针对于Altera的Cyclone III 做出了静态功耗 对于Altera 其提供了一个功耗早期估计工具 可以在官网上下到 首先需要将宏设置为安全 在excel选型中选择文件 之后便可看到 根据相应的选择 红框部分 可以查看静态功耗 对于
  • 用python接收高速率的UDP数据包

    我正在使用 python 来从 FPGA 接收 UDP 数据包流 并尝试丢失尽可能少的数据包 数据包速率从大约 5kHz 到一些 MHz 我们希望在特定时间窗口 代码中的 acq time 内获取数据 我们现在有这样的代码 BUFSIZE
  • 基于FPGA的简易BPSK和QPSK

    1 框图 2 顶层 3 m generator M序列的生成 输出速率为500Kbps 4 S2P是串并转换模块 将1bit的m序列转换到50M时钟下的2bit M序列数据 就有4个象限 5 my pll是生成256M的时钟作为载波 因为s
  • 异步FIFO设计之格雷码

    目录 二进制转格雷码 格雷码转二进制 相邻的格雷码只有1bit的差异 因此格雷码常常用于异步fifo设计中 保证afifo的读地址 或写地址 被写时钟 或读时钟 采样时最多只有1bit发生跳变 在不考虑路径延时的情况下 因为源数据 读写地址
  • 用于 Verilog 或 SystemVerilog 的 TAP(测试任何协议)模块

    是否有 TAP 测试任何协议 http testanything org Verilog 的实现 那就太好了 因为这样我就可以使用证明来自动检查我的结果 更新 10 9 09 有人问为什么不使用断言 部分 TAP 为我提供了一些很好的报告
  • VHDL门控时钟如何避免

    我收到了避免使用门控时钟的建议 因为它可能会导致松弛和时序限制问题 但我想问一下我可以认为什么是门控时钟 例如 此代码对时钟进行门控 因为 StopCount 对它进行门控 process ModuleCLK begin if rising
  • PyOpenCL 中的时间测量

    我正在 FPGA 和 GPU 中使用 PyOpenCL 运行内核 为了测量执行所需的时间 我使用 t1 time event mykernel queue c width c height block size block size d c
  • 无符号和 std_logic_vector 之间的区别

    谁能告诉我以下书面陈述之间的区别 signal A unsigned 3 downto 0 signal B std logic vector 3 downto 0 Both std logic vector and unsigned ar
  • VHDL 中奇怪的 XNOR 行为

    导致问题的代码看起来像正常的 xnor 操作 如下所示 S 1 lt L 16 xnor L 26 该行会导致以下错误 ncvhdl p E EXPSMI HDL aes sbox enc depth16 vhd 169 14 expect

随机推荐

  • kp = sift.detect(gray,None)cv2.error: Unknown C++ exception from OpenCV code

    在我们学习opencv的时候 会遇到一下算法的专利问题 比如我这次学习中在使用SIFT算法来检测角点时 下面分享一下如何解决SIFT不能只用的问题 原代码 import cv2 import numpy as np img cv2 imre
  • 若依框架图片上传、富文本框编辑器功能

    文章目录 一 前言 二 效果 三 编码过程 1 前端 index vue projectShow js 富文本框 Editor index vue 图片上传 ImgUploadCropper index vue 2 后端 实体Project
  • plc 变量的数据类型

    标准数据类型 布尔型数据类型 布尔型变量可被赋予 TRUE 真或 FALSE 假 这个值为逻辑量 占用1 位存储空间 整型数据类型 整型变量可以是 BYTE WORD DWORD SINT USINT INT UINT DINT 和UDIN
  • Pentaho学习笔记

    一 Pentaho 整体架构 cc 二 Client tools 1 Report Designer 报表创建工具 如果想创建复杂数据驱动的报表 这是合适工具 2 Design Studio 这是基于eclipse的工具 你可以使用它来创建
  • [咕噜Todo]我写了一个简单易用的todo pc工具、希望你也喜欢。

    官网 https anfo fun group 工作台 使用tags灵活分类 还可以设置子任务 视图管理等 日历 直观了解计划完成情况 轻松应对deadline 动态 根据tags连接世界 与朋友一起进步 正在做 客户端的功能 多任务并行也
  • 如何将Hyperledger Fabric PoC应用程序部署到云端

    我假设你已经学习了如何构建Hyperledger Fabric区块链网络 并且你还学习了如何在Node js或Fabric支持的其他语言中创建链代码 并且你已经学会了如何在这样的基础上开发Web应用程序在网络上 否则建议你先看看使用Hype
  • 串口服务器能发ttl信号吗,串口服务器是怎么实现通信的

    串口服务器是怎么实现通信的 复制链接 串口服务器作用通过串口把工业设备通过有线 RJ45 或无线 WIFI 的方式连连接到以太网上 来实现设备的远程传输与管理 那么串口服务器通信是怎么样通信的呢 下面就以众山设备ZSE310为例 介绍串口服
  • Python图片批量自动抠图去背景

    今天发现个好东西啊 叫片刻抠图 是一个在线对图片自动抠图去除背景的网站 只要上传图片 就可以自动把背景去掉把目标对象抠出来 不管是动物 汽车或各种产品 还是人物 都可以全自动做到令人惊艳的抠图效果 而且还说可以做到发丝级 AI 自动抠图 作
  • 牛客编程1-给定区间[-2^31, 2^31]内的3个整数A、B和C,请判断A+B是否大于C。

    给定区间 2 31 2 31 内的3个整数A B和C 请判断A B是否大于C include
  • 09. bs4解析基础与实例

    目录 前言 bs4的安装 bs4使用基础 bs4实例 获取某网站菜价 代码实现 完整代码 重要提醒 总结 前言 我们已经具备了基本的HTML知识 能够简单的识别HTML源代码中的各类元素 这一节我们将正式学习bs4的用法 并用一个实例来展示
  • EasyAR_无法打开“EasyAR“,因为无法验证开发者

    原文地址 https blog csdn net lxh worldpeace article details 107098524 今天用Android Studio编译一个项目 偶遇这个问题 说我的AS是从哪哪下载的 无法保证安全性之类的
  • 【C/C++】浮点数大小的比较问题分析及解决方案

    1 问题 在实际工程当中时常会遇到浮点数float的比较 但常规的比较思路是不可靠的 C C Java python JavaScript等主流语言都存在这个问题 存在巨大的工程隐患 例如 float a 0 9f float c 1 0f
  • vs code配置C/C++开发环境

    第一步 下载 Vs Code 点击链接下载Vs Code 下载版本 并安装 https code visualstudio com 点击 Download for Windwos 安装时 如图 请一定要勾选 添加到PATH 环境变量 其他选
  • css文字覆盖线性渐变,利用css使文字渐变

    mark c 本博客加入QQ群就是这个效果 代码来至 青找博客英文名 Qing Zhao mark c 效果图 HTML 一个人真正优秀的特质来自于内心想要变得更加优秀的那种强烈的渴望 和对生命的追求那种火热的激情 CSS masked p
  • 【docker】docker部署tomcat

    目录 1 1 搜索tomcat镜像 1 2 拉取tomcat镜像 1 3 创建容器 设置端口映射 目录映射 1 4 测试 1 1 搜索tomcat镜像 docker search tomcat 1 2 拉取tomcat镜像 docker p
  • Python开发是面向过程、函数还是对象?

    Python虽然是解释型语言 但从设计之初就已经是一门面向对象的语言 对于Python来说一切皆为对象 正因为如此 在Python中创建一个类和对象是很容易的 当然如果习惯面向过程或者函数的写法也是可以的 Python并不做硬性的限制 Py
  • 图像构成与信号处理之三——图像滤波

    一 什么是图像滤波 图像滤波是一种常见的图像处理技术 用于平滑图像 去除噪声和边缘检测等任务 其工作的原理是通过提前设定滤波器 将滤波器作用与原图像 得到拥有需要的滤波效果的图像 一般图像滤波分为平滑类 均值滤波 去噪类 中值滤波 突出边缘
  • 多机器人仓储巡逻路径规划问题的A*算法实现(附带MATLAB代码)

    多机器人仓储巡逻路径规划问题的A 算法实现 附带MATLAB代码 路径规划是多机器人系统中一个重要的问题 特别是在仓储巡逻等应用中 A A Star 算法是一种经典的启发式搜索算法 可以用于解决路径规划问题 本文将介绍如何使用A 算法实现多
  • R手册(Time Series)--forecast and prophet

    文章目录 forecast for Time Series and Linear Models 时间序列分析 模型 预测 ggplot2扩展 模型评估 prophet 构建模型 模型预测 可视化 交叉验证 时间序列分析 Time Serie
  • FPGA面试题

    面试题摘自尤老师FPGA 1 2 TPLH 脉冲由低电平变成高电平的延迟时间 TPHL 脉冲由高电平变成低电平的延迟时间 本题采用假设法 假设开始输入信号为高电平 经过两次非门是一个时钟周期 TPHL TPLH 0 2 ns 震荡周期意思为