FPGA期末考试复习总结

2021年下学年可编程逻辑器件(FPGA)期末复习总结,仅供参考

判断题

  1. 关于端口定义:一般有输入(input)、输出(output)、双向端口(inout)。
  2. Verilog HDL是一种硬件描述语言一般用于设计数字电路核数字逻辑系统,可对算法级、门级、开关级等多种抽象设计层次进行建模。
  3. 阻塞赋值与非阻塞赋值:
    1)阻塞赋值(=)–组合电路
    变量=赋值表达式 ;// c = a&b ;
    赋值语句结束后块才结束;a或者b的值改变,c会随之立即改变;在时序逻辑中用阻塞赋值会造成意向不到的后果。
    2)非阻塞赋值(<=)–时序电路
    变量 <=赋值表达式 ;// c <= a&b ;
    块结束后才能完成赋值操作, a或者b的值改变,C不会随之立即变化。
    3)阻塞赋值与非阻塞赋值的差别
    always@(posedge clk) always@(posedge clk)
    begin begin
    b <= a ; b = a ;
    c <= b ; c = b ;
    end end
  4. 关于assign语句:不支持对reg 数据类型的assign或deassign进行综合,支持对wire数据类型的assign或deassign进行综合。
  5. 分支语句:case 语句是一种多路条件分支的形式,可以解决 if 语句中有多个条件选项时使用不方便的问题
    case 语句支持嵌套使用、case 语句中的条件选项表单式不必都是常量,也可以是 x 值或 z 值
    case 语句执行时,如果 condition1 为真,则执行 true_statement1 ; 如果 condition1 为假,condition2 为真,则执行 true_statement2;依次类推。如果各个 condition 都不为真,则执行 default_statement 语句。
    default 语句是可选的,且在一个 case 语句中不能有多个 default 语句。
  6. IP核种类:软核、硬核、固核。
  7. 模块调用:在一个模块中引用另一个模块,对其端口进行相关连接,叫做模块例化。模块例化建立了描述的层次。信号端口可以通过位置或名称关联,端口连接也必须遵循一些规则。
    命名端口连接、顺序端口连接、端口连接规则、位宽匹配、端口连续信号类型。
  8. 可综合电路与不可综合电路
    一般可综合电路用于设计;不可综合电路用于仿真和测试。

填空题

1.有关移位操作
移位操作符是把操作数向左或向右移若干位。移位操作符有两种:<<(左移)、>>(右移)。
  移位操作符有两个操作数,右侧操作数表示的是左侧操作数所移动的位数。它是一个逻辑移位,空闲位添0补位。如果右侧操作数的值为x或z,则移位操作的结果为x。
4’b10x0 >> 1 = 4’b010x
4’b1010 <<2 = 4’b1000
2.字符拼接与复制
 连接操作是将多组信号用大括号括起来,拼接成一组新信号。其表示形式如下:
    {expr1, expr2, …, exprN}
例:a=3’b101 b=4’b1010 {a,b}=7’b1011010
{a,a}= {2{a}}=6’b101101
3. 端口
模块的端口定义声明了模块的所有输入\输出端口,格式如下:
module 模块名 (端口1,端口2,端口3,·······);
模块的端口包含模块与外部联系的全部输入输出信号,端口之间用“,”隔开;
4.always
always 块的综合可以分为至少两类电路:1、组合逻辑电路 2、时序逻辑电路
5.循环语句
forever、while、repeat、for (其中前三类只能用于仿真)
6.数据类型
Verilog共有19种数据类型,reg、wire、parameter、integer是最常用的四种数据类型。
7.FPGA开发流程
FPGA开发流程是自上而下(Top-Down)的设计方法。优化后的FPGA开发流程如图所示。
需求分析、模块划分、代码设计、综合优化、实现、板级调试

程序设计题

1.数码管动态扫描
下面展示一些 内联代码片

// 数码管动态扫描
//6个数码管显示123456,动态扫描
// An highlighted block
module smg(input                clk,input               rst_n,output    reg [5:0]   sel,                    //数码管选择输出引脚output   reg [7:0]   seg                 //数码管段输出引脚);reg[3:0] data;                          //定义显示数据寄存器
reg[24:0]count;                         //定义计数寄存器
//秒信号产生部分
always @(posedge clk or negedge rst_n)         //定义clk上升沿触发
beginif(!rst_n)count<=0;else if(count == 25'd250000)     //0.5S到了吗?count = 25'd0;                   //计数器清零elsecount = count + 1'b1;
end
//数码管动态扫描显示部分
always @(posedge clk or negedge rst_n)   //count[17:15]大约1ms改变一次
beginif(!rst_n)data<=0;elsecase(count[15:13])               //选择扫描显示数据3'd0:data<= 1;           //个位3'd1:data<= 2;         //十位3'd2:data<= 3;         //百位3'd3:data<= 4;         //千位3'd4:data <= 5;            //万位3'd5:data<= 6;         //十万位endcase
end
always @(posedge clk)                  //count[17:15]大约1ms改变一次
begincase(count[15:13])                     //选择扫描显示数据3'd0:sel<= 6'b111110;           //选择第一个数码管显示3'd1:sel<= 6'b111101;         //选择第二个数码管显示3'd2:sel<= 6'b111011;         //选择第三个数码管显示3'd3:sel<= 6'b110111;         //选择第四个数码管显示3'd4:sel<= 6'b101111;         //选择第五个数码管显示3'd5:sel<= 6'b011111;         //选择第六个数码管显示endcase
end
always @(posedge clk)
begincase(data)4'h0:seg<= 8'hc0;                  //显示04'h1:seg<= 8'hf9;                    //显示14'h2:seg <= 8'ha4;                   //显示24'h3:seg <= 8'hb0;                   //显示34'h4:seg <= 8'h99;                   //显示44'h5:seg <= 8'h92;                   //显示54'h6:seg <= 8'h82;                   //显示64'h7:seg <= 8'hf8;                   //显示74'h8:seg <= 8'h80;                   //显示84'h9:seg <= 8'h90;                   //显示94'ha:seg <= 8'hbf;                   //显示-default:sm_seg <= 8'hff;          //不显示endcase
end
endmodule

2.分频
下面展示一些 内联代码片

// 分频
//根据修改m的值实现任意分频
//此处产生1Hz的clk
// An highlighted block
module demo_1(clk,rst_n,clk_div);
input clk,rst_n;
output clk_div;
reg clk_div;
//---------------------分频开始-----------------------
parameter m=49999999;
integer div_cnt=0;
always@(posedge clk or negedge rst_n)
if(!rst_n)
div_cnt<=1’b0;
else
beginif(div_cnt==m)beginclk_div<=1'b1;div_cnt<=0;endelsebeginclk_div<=1'b0;div_cnt<=div_cnt+1;end
end
//---------------------分频结束-----------------------
endmodule

3.按键消抖(盲猜会考)
下面展示一些 内联代码片

// 按键消抖
// An highlighted block
module key_scan(clk ,rst_n ,key);
input clk ;
input rst_n ;
input [3:0] key ;
reg[19:0]count;
reg[3:0]key_scan;//扫描按键值
//---------------------------------------------
//采样按键值,20ms扫描一次,采样频率小于按键毛刺频率,相当于滤除掉了高频毛刺信号。
//---------------------------------------------
always @(posedge clk or negedge rst_n)//检测时钟的上升沿和复位的下降沿
begin
if(rst_n==1'b0)
count<=20'd0;//先将计数清零
else
begin
if(count==20'd999_999)//20ms 扫描一次按键,20ms 计数(50M/50-1=999_999)
begin
count<=20'd0; //计数器计到 20ms,计数器清零
key_scan<=key;//采样按键输入电ping
end
else
count<=count+20'b1;//计数器加1
end
end
//----------------------------------------------------
// 按键信号锁存一个时钟节拍
//----------------------------------------------------
reg [3:0] key_scan_r;
always @(posedge clk)key_scan_r <= key_scan; wire [3:0] flag_key = key_scan_r[3:0] & (~key_scan[3:0]); //当检测到按键有下降沿变化时,代表该按键被按下,按键有效
endmodule

4.组合逻辑电路
此处仅放两个作为参考
下面展示一些 内联代码片

// 四位全加器
module adder4(cout,sum,ina,inb,cin);
output[3:0] sum;
output cout;
input[3:0] ina,inb;
input cin;
assign sum=ina^inb^cin;
assign cout=(ina^inb)&cin|ina&inb;
endmodule

下面展示一些 内联代码片

// 四选一数据选择器
module mux4_1(out,in0,in1,in2,in3,sel);
output out;
input in0,in1,in2,in3;
input[1:0] sel;
reg out;
always @(in0 or in1 or in2 or in3 or sel) //敏感信号列表case(sel)
2'b00: out=in0;
2'b01: out=in1;
2'b10: out=in2;
2'b11: out=in3;
default: out=2'bx;endcase
endmodule

程序填空

有关状态机——以三段式为例
下面通过实例来说明状态机的原理与设计方法。如设计一个110报警检测器,当检测到报警电话110时则输出报警信号。

下面展示一些 内联代码片

//状态机
module   state_detec(clk,rst_n,num,result); input    clk ,   rst_n   ;//输入信号input    num              ;//output result             ;//输出信号reg        result            ;//reg   [3:0]  cstate        ;//中间信号reg   [3:0]  nstate        ;//中间信号parameter  idle  =   4’b0001   ; //状态机参数定义parameter  S1    =   4’b0010   ;parameter  S2    =   4’b0100   ;parameter  S3    =   4’b1000   ;always@(posedge clk)if(!rst_n)cstate   <= idle       ;elsecstate   <= nstate  ;always@(*)case(cstate)idle:if(num)nstate  = S1    ;else nstate  = idle ;S1:if(num)nstate   = S2 ;elsenstate   = idle ;S2:if(num)nstate   = S2 ;elsenstate  = S3 ;S3:if(num)nstate  = S1 ;elsenstate  = idle ;default: nstate = idle ;endcase
always@(posedge clk)if(!rst_n)result <= 1’b0  ;else if(nstate == S3)result <= 1’b1  ;elseresult <= 1’b0  ;endmodule

内容很长,感谢阅读,希望对你有帮助!

可编程逻辑器件期末复习总结相关推荐

  1. CPLD FPGA可编程逻辑器件概念复习

    PLD  可编程逻辑器件 PLD大致分为SPLD CPLD FPGA 三类,SPLD CPLD原理相同复杂程度不通,FPGA和前面两种电路结构不同. SPLD simple PLD 简单可编程逻辑器件 ...

  2. 《计算机组成原理》期末复习资料汇总

    <计算机组成原理>期末复习资料汇总 一.名词解释 微程序:是指能实现一条机器指令功能的微指令序列. 微指令:在机器的一个CPU周期内,一组实现一定操作功能的微命令的组合. 微操作:执行部件 ...

  3. 计算机组成原理考试知识点总结,最新2018计算机组成原理期末复习考试知识点复习考点归纳总结总结...

    电大计算机组成原理期末复习考试考点 归纳总结 科学研究和工程技术计算是计算机最早的领域. 信息处理是计算机应用的最广泛的领域. 计算机系统分为硬件和软件两大部分.硬件是实体部件,是看得见摸得着的.软件 ...

  4. 计算机组成与系统结构名词解释,北京邮电大学 计算机系统结构(体系结构) 期末复习 术语解释...

    北邮 体系结构 期末复习 简答题(名词解释) 1. 计算机系统结构:机器语言程序员所看到的传统机器级所具有的属性,它包括概念性结构和功能特性两个方面. 2. 计算机组成:指的是计算机系统结构的逻辑实现 ...

  5. 某微型计算机指令格式如图,计算机组成原理期末复习试题2套不含答案

    计算机组成原理期末复习试题2套不含答案 (8页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 附录C:<计算机组成原理>期末试卷样 ...

  6. RFID原理及应用期末复习笔记 | 1.RFID概述【完结✿✿ヽ(°▽°)ノ✿】

    系列索引:RFID原理及应用期末复习笔记 | 快速索引 RFID是博主大三下的一门专业课,因为疫情缩短学期进程提前结课,所以期末考试也来的更早,这里就简单记录一下自己复习时的一些笔记,也给后来的学弟学 ...

  7. 光纤通信技术期末复习提纲

    文章目录 光纤通信技术期末复习提纲 一,第一章:绪论 1.光纤通信基本概念 2.光纤通信的主要特点 (1)优点 (2)缺点 3.光纤通信的三个低损耗窗口 二.第二章:光纤光缆技术 1.光纤的结构 2. ...

  8. TUT嵌入式2020年期末复习提纲

    0202年天京工理学院嵌入式期末复习提纲 题型占分一览: 填空题20分选择题10分判断题10分简答题20分编程题40分 小题部分: 1.SPI的四颗线: 串行外设接口(SPI)是微控制器和外围IC(如 ...

  9. 《RFID原理及应用》期末复习总结

    <RFID原理及应用>期末复习总结 适用教材:<RFID原理与应用(第2版)>,许毅.陈建军编著,清华大学出版社 提示:与教材内容不完全匹配,有所取舍. 写在前面: 这份复习总 ...

最新文章

  1. 极端值目标值(exterem or outlier target)对应的核心特征的分布差异分析+结合catboost特种重要度(top10)
  2. malloc()之后free报错的原因[详细解析]
  3. pycharm git gitee 如何将红色文件推送到repository?(将工作区内容添加到暂存区)(git add)
  4. 基于Native Client的编程框架
  5. 计算机视觉算法岗面经,2019秋招资料
  6. vs2013 没有ef mysql_vs2013 EF Mysql
  7. 因式分解题目及过程_两道新定义题目的对比分析
  8. 3dmax2016软件一打开文件就程序错误的原因及解决方法
  9. bmd硬盘测试_disk speed test mac版下载-Blackmagic Disk Speed Test for Mac(硬盘读写速度测试工具) v3.2免费版 - Mac天空...
  10. This scheduler instance (XXXXX) is still active but was recovered by another
  11. 适用于遥感图像处理的神经网络
  12. BAT大牛带你深度剖析Android10大开源框架
  13. 冶金、水泥、化工行业自动化通信产品介绍
  14. 双模 5G 拍照最强?— X30 Pro 评测
  15. 【HTML 教程系列第 14 篇】什么是 HTML 中的有序列表 ol
  16. 西安电子科技大学计算机834,西安电子科技大学834数据结构2021年硕士研究生招生考试自命题科目考试大纲...
  17. 抖音短视频企业号如何运营
  18. java音频解析_实例解析使用Java实现基本的音频播放器的编写要点
  19. Oracle REST DataServices(ORDS):Authentication认证
  20. 为什么说,没有asdl之前,一根电话线,不可以,同时打座机电话上网

热门文章

  1. 一般企业会计如何建账
  2. git log 怎么退出
  3. JavaScript解答罗志祥多人运动题
  4. 计算机安全知识策划书,网络安全讲座活动策划书
  5. mysql数据转换英文_MysqlToDbf|英文免安装版数据转换工具下载_最火软件站
  6. AK F.*ing leetcode 流浪计划之回文串
  7. HelloWord回顾
  8. 均值场博弈_平均场博弈论数值算法之系数法
  9. LA@相似方阵和对角化
  10. 梦幻西游手游服务器维护公告,《梦幻西游》手游2021年1月6日维护公告:《梦幻风尚》华丽面世_《梦幻西游》手游官网-人人都玩,无处不在...