【芯片设计- RTL 数字逻辑设计入门 15 -- 函数实现数据大小端转换】

news/2024/4/17 17:22:24

文章目录

    • 函数实现数据大小端转换
      • 函数语法
      • 函数使用的规则
      • Verilog and Testbench
      • 综合图
      • VCS 仿真波形

函数实现数据大小端转换

在数字芯片设计中,经常把实现特定功能的模块编写成函数,在需要的时候再在主模块中调用,以提高代码的复用性和提高设计的层次,分别后续的修改。

请用函数实现一个4bit数据大小端转换的功能。实现对两个不同的输入分别转换并输出。
程序的接口信号图如下:
在这里插入图片描述
使用Verilog HDL实现以上功能并编写testbench验证。

输入描述

  • clk:系统时钟
  • rst_n:异步复位信号,低电平有效
  • a,b:4bit位宽的无符号数

输出描述

  • c,d:4bit位宽的无符号数

函数语法

function [range] function_id; input_declaration other_declarations procedural_statement 
endfunction

中文版:

function <返回值的类型或范围>函数名;  <端口说明语句><变量类型说明语句>begin<语句>end
endfunction
  • function 语句标志着函数定义结构的开始;
  • <返回值的类型或范围>: 这一项为可选项,如果缺失,则返回值为一位寄存器类型数据,函数名就是返回值,默认是reg类型;
  • input_declaration 用于对函数各个输入端口的位宽和类型进行说明,在函数定义中至少要有一个输入端口;
  • endfunction为函数结构体结束标志。

函数使用的规则

  • 函数定义不能包含有任何的时间控制语句,即任何用#、@、wait来标识的语句。

  • 函数不能调用“task”。

  • 定义函数时至少要有一个输入参数。

  • 在函数的定义中必须有一条赋值语句给函数中与函数名同名、位宽相同的内部寄存器赋值。

  • verilog中的function只能用于组合逻辑

  • 函数中只有组合逻辑,所以函数是可以综合的。

Verilog and Testbench

在这里插入图片描述

综合图

在这里插入图片描述

VCS 仿真波形

在这里插入图片描述


https://www.xjx100.cn/news/3271458.html

相关文章

算法学习——LeetCode力扣二叉树篇4

算法学习——LeetCode力扣二叉树篇4 222. 完全二叉树的节点个数 222. 完全二叉树的节点个数 - 力扣&#xff08;LeetCode&#xff09; 描述 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xf…

【项目日记(九)】项目整体测试,优化以及缺陷分析

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:项目日记-高并发内存池⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你做项目   &#x1f51d;&#x1f51d; 开发环境: Visual Studio 2022 项目日…

C#,21根火柴棍问题(21 Matchticks Problem)的算法与源代码

一、21根火柴棍问题&#xff08;21 Matchticks Problem&#xff09; 21根火柴棍问题是西方经典游戏之一。 给定21根火柴&#xff0c;2个人A和B&#xff08;比如&#xff1a;分别是计算机和用户&#xff09;。 每个人一次可以挑选 1-- 4 根火柴。 被迫挑最后一根火柴的人输了…

java中ArrayList类常用API

前言&#xff1a;在学习java的ArrayList类的时候&#xff0c;有很多的API需要了解&#xff0c;下面我将举出其中在新手学习时使用频率较大的几个API。 先大体看一下有哪几个&#xff1a;&#xff08;如图&#xff09; 目录 1.add&#xff08;&#xff09; 解释&#xff1a; …

Ubuntu Desktop - Terminal 输出全部选中 + 复制

Ubuntu Desktop - Terminal 输出全部选中 复制 1. Terminal2. Terminal 最大化3. Edit -> Select All4. Copy & PasteReferences 1. Terminal 2. Terminal 最大化 3. Edit -> Select All 4. Copy & Paste Edit -> Copy or Shift Ctrl C Edit -> Paste…

时间序列预测——BiGRU模型

时间序列预测——BiGRU模型 时间序列预测是指根据历史数据的模式来预测未来时间点的值或趋势的过程。在深度学习领域&#xff0c;循环神经网络&#xff08;Recurrent Neural Networks, RNNs&#xff09;是常用于时间序列预测的模型之一。在RNNs的基础上&#xff0c;GRU&#x…

幻兽帕鲁 Linux 服务器迁移完成之后,进入游戏会出现闪退?怎么解决?

主要的原因是迁移的存档文件&#xff0c;新服务器可能没有操作存档文件的权限&#xff0c;不能成功更新存档&#xff0c;从而导致闪退。 建议&#xff1a;在 Linux 服务器内&#xff0c;依次运行如下命令后&#xff0c;再次尝试连接游戏&#xff1a; 第一步&#xff1a; s…