写在前面

  1. 这个专栏的内容记录的是Verilog题库解题过程,附带RTL\TestBench,并进行相关覆盖率收集
  2. 该题库算是一个Verilog宝藏刷题网站了,提供在线仿真环境(题库),<刷题记录>专栏,持续打卡中…

文章目录

  • 一、题目
  • (1)题目描述
  • (2) 状态转换
  • (3)信号示意图
  • (4)端口描述
  • 二、分析
  • 三、RTL
  • 四、Testbench
  • 五、结果分析
  • (1)TB结果
  • (2)波形图
  • (3)覆盖率

一、题目

(1)题目描述

  根据指示信号select的不同,对输入信号a,b实现不同的运算。输入信号a,b为8bit有符号数,当select信号为0,输出a;当select信号为1,输出b;当select信号为2,输出a+b;当select信号为3,输出a-b.


(2) 状态转换

select c[9:0]
00 a
01 b
10 a+b
11 a-b

(3)信号示意图


(4)端口描述

信号 方向 类型 位宽 描述
clk input wire 1bit 时钟,时钟周期为5ns
rst_n input wire 1bit 异步下降沿有效
a[7:0] input wire 8bit 输入的数据
b[7:0] input wire 8bit 输入的数据
select[1:0] input wire 2bit 0:输出a;
1:输出b;
2:输出a+b;
3:输出a-b;
c[8:0] output reg 9bit 输出的有符号结果

二、分析

注意有符号数运算的数据溢出情况,需要进行位宽扩展。


三、RTL

module data_select(input                    clk   ,input                    rst_n ,input      signed  [7:0] a     ,input      signed  [7:0] b     ,input              [1:0] select,output reg signed  [8:0] c
);always @ (posedge clk or negedge rst_n) beginif (!rst_n) beginc <= 9'sb0;endelse  begincase(select)2'b00:c <= {a[7],a}           ;2'b01:c <= {b[7],b}           ;2'b10:c <= {a[7],a} + {b[7],b};2'b11:c <= {a[7],a} - {b[7],b};default:c <= 9'sb0;endcaseend
endendmodule

四、Testbench

`timescale 1ps/1ps
module tb_data_select;reg         clk         ;reg         rst_n       ;reg signed [7:0]  a     ;reg signed [7:0]  b     ;reg [1:0]  select       ;wire signed [8:0]  c    ;/*-----------------------------------------------\--    --
\-----------------------------------------------*/
//-- debug signalinitial beginclk   = 1;rst_n   = 1;#1000 rst_n = 0;#4001 rst_n = 1;repeat(20000)begin#5000  d_case(a,b,select);end
end/*-----------------------------------------------\--    --
\-----------------------------------------------*/
task d_case;output signed [7:0] a;//aoutput signed [7:0] b;//boutput        [1:0] s;//selectbegina = $random%256;b = $random%256;s = {$random}%4;end
endtask/*-----------------------------------------------\--  clock period is 5ns  --
\-----------------------------------------------*/
always begin#2500 clk = ~clk;
end/*-----------------------------------------------\--  display  --
\-----------------------------------------------*/
always @ (c)beginif((select == 0) && (rst_n == 1))beginif(c == {a[7],a});else begin$display($realtime,",signed a = %b;signed c = %b",{a[7],a},c);endendelse if((select == 1) && (rst_n == 1))beginif(c == {b[7],b});else begin$display($realtime,",signed b = %b;signed c = %b",{b[7],b},c);endendelse if((select == 2) && (rst_n == 1))beginif(c == {a[7],a} + {b[7],b});else begin$display($realtime,",signed a = %b;signed b = %b;a+b = %b;signed c = %b",{a[7],a},{b[7],b},{a[7],a} + {b[7]},c);endendelse if((select == 3) && (rst_n == 1))beginif(c == {a[7],a} - {b[7],b});else begin$display($realtime,",signed a = %b;signed b = %b;a-b = %b;signed c = %b",{a[7],a},{b[7],b},{a[7],a} - {b[7]},c);endend
enddata_select u_data_select(.clk          (clk   ),.rst_n        (rst_n ),.a            (a     ),.b            (b     ),.select       (select),.c            (c));initial #60000000 $finish;
initial begin$fsdbDumpfile("data_select.fsdb");$fsdbDumpvars                    ;$fsdbDumpMDA                     ;
end
endmodule

五、结果分析

(1)TB结果


TBdisplay无打印错误信息,初步检查无误。


(2)波形图


a b select a+b a-b c
0010_0100 1000_0001 1 - - 1_1000_0001
1100_0110 1100_0101 2 - 1_1000_1011
1110_1000 1100_0101 0 - - 1_1110_1000
0111_1000 1000_1001 3 - 0_1110_1111

由波形和计算可以知道,结果与预期一致


(3)覆盖率

RTL代码覆盖率达到100%。


✍✍☛ 题库入口
  经过一段时间的沉淀,发现入行IC行业,自己的底子还是很差,写的文章质量参差不齐,也没能解答大家的疑问。决定还是要实打实从基础学起,由浅入深。因此决定通过补充/完善基础知识的同时,通过题库刷题不断提高自己的设计水平,题库推荐给大家(点击直达),<题库记录>栏目不定期更新,欢迎前来讨论。


作者:xlinxdu
版权:本文版权归作者所有
转载:未经作者允许,禁止转载,转载必须保留此段声明,必须在文章中给出原文连接。

VL6 多功能数据处理器相关推荐

  1. 牛客网Veirlog刷题答案目录(持续更新)

    牛客网Veirlog刷题答案目录(持续更新) 基础篇 进阶篇 基础篇 1.VL1--四选一多路选择器 2.VL2--异步复位的串联T触发器 3.VL3--奇偶校验 4.VL4--移位运算与乘法 5.V ...

  2. 《牛客刷verilog》Part I Verilog快速入门

    前言 之前刷过HDLbits上面的题目,点击链接可以查看详细笔记:verilog练习:hdlbits网站系列完结! 最近又想刷一下牛客上面的题目,可以点击链接与小编一起刷题:牛客刷题 小编不才,文中如 ...

  3. FPGA数字IC刷题58道Verilog题解代码及视频讲解【FPGA探索者】【同步/异步FIFO】【跨时钟】

    牛客 Verilog 刷题入门篇1~24 + 进阶篇1~34 题解代码,所有代码均能通过测试,配合视频讲解效果更佳.为避免内容冗余,本文只给出代码,部分题目给出必要说明. 很多题目本身出题有些问题,着 ...

  4. 牛客网刷题 入门篇 基础语法

    VL1 四选一多路器 四选一多路器_牛客题霸_牛客网 `timescale 1ns/1ns module mux4_1( input [1:0]d1,d2,d3,d0, input [1:0]sel, ...

  5. 机器视觉技术影像测量应用

    影像测量仪是一种由高解析度CCD彩色镜头.连续变倍物镜.彩色显示器.视频十字线显示器.精密光栅尺.多功能数据处理器.数据测量软件与高精密工作台结构组成的高精度光学影像测量仪器. 影像测量仪是基于机器视 ...

  6. DPU(Data Processing Unit)数据处理器

    DPU(Data Processing Unit)数据处理器 DPU:5G边缘云 5G时代带来通信带宽的巨大提升,更多的带宽使能更多的应用.数据量的迅猛增多,服务器网络带宽的快速增长,都已经远超计算能 ...

  7. Palabos用户手册翻译及学习(四)非本地操作的数据处理器和块之间的耦合

    非本地操作的数据处理器和块之间的耦合 Palabos用户文档 的第十六章 (#)前言 原始文档 Dynamics classes and data processors are the nuts an ...

  8. 云豹智能发布全功能云霄DPU网卡,引领数据中心新趋势

    12月15日,云豹智能发布全功能云霄DPU网卡,全面支持裸金属.虚拟机和容器服务资源一体化和性能加速. 从以CPU为中心向以数据为中心的演进中,DPU将成为数据中心基础性核心技术 数字智能时代来临,云 ...

  9. Palabos User Guide中文解读 | 第十六章 | 非局部操作的数据处理器和Block之间耦合

    作者的话:本人在学习palabos时,发现国内中文资料甚少,恰好网上可以直接搜到palabos user guide这种英文资料,加之时间充裕,便打算开始翻译,翻了一节后发现这可能算侵权,就比较伤脑筋 ...

  10. 地磅称重无人值守称重系统:全套如何选择和功能介绍

    无人值守地磅称重,其实也叫TWS系统即(科技称重系统),不是所有地磅使用的单位都必须需要安装一套设备+软件,它主要是通过设备和软件系统进行协同作业的,把客户需要的和想要的客观称重结果数据进行保存展现, ...

最新文章

  1. ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes怎么处理
  2. 《C++ Primer Plus(第六版)》(17)(第十章 对象和类 编程题答案)
  3. rhel7 http实例3
  4. 二叉树和为某种所有路径
  5. .Net 中的反射(查看基本类型信息) - Part.2
  6. antimalware可以关闭吗_EMUI这几个功能一定要关闭 不然手机会越来越卡
  7. Maven常用参数说明
  8. 【Android XMPP】 学习资料收集贴(持续更新)
  9. android studio 预览问题 :java.lang.NoClassDefFoundError: com/android/util/PropertiesMap
  10. python语言unity3d_Unity3D 中的 IronPython
  11. VALSE学习(一):high-resolution representation learning-高分辨率表示学习-姿态估计
  12. SQL SERVER 2005 批量收缩数据库
  13. C# action 返回值_C#与ABB机械手建立通信,并控制机械手动作 - 龙拓电子
  14. ssdp协议 upnp_【零知ESP8266】教程:SSDP简单服务发现协议示例
  15. COCO2017 test-dev评估
  16. Flink系列:物理分区分组broadcast、global、shuffle、forward、rebalance、rescale理解与实战
  17. 研究计算机 英语,高职计算机英语多方法结合研究
  18. 手提无法使用Ghost方法安装win7系统,出现一直显示DOS工具箱和硬盘无效情况的解决
  19. 西数硬盘刷新固件_关于西数硬盘转速的fake news
  20. RichTalk 快报 第 5 期

热门文章

  1. MyBatis学习(五):动态SQL
  2. 2022金属非金属矿山(露天矿山)主要负责人操作证考试题库及模拟考试
  3. 点云从入门到精通技术详解100篇-单期点云的高斯曲率定位桥梁潜在损伤技术研究
  4. 亮哥推荐 查看一个进程的堆栈文章
  5. JAVA大文件上传支持切片上传
  6. 【狂神说Java】SpringBoot最新教程IDEA版通俗易懂20 ~ 28:员工管理系统
  7. 3g安卓市场_如果不是乔布斯,安卓差一点就步了黑莓后尘
  8. 认识Redis的跳跃表的结构
  9. 2021软件测试学习笔记,学习路线
  10. 菲亚特克莱斯勒汽车正式提议与雷诺对等合并