在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2067|回复: 2

[讨论] Verilog缺少一个复合数据类型,如C语言中的结构体

[复制链接]
发表于 2018-9-17 10:48:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
Verilog中的数据类型(Data Type)是分散的,缺少一个复合数据类型:把多个wire, reg组合到一起成为一个新的类型。

如C语言里面的结构体(struct),SystemVerilog已经添加了支持。




  1. struct {
  2.   reg [15:0] opcode;
  3.   reg [23:0] addr;
  4. } IR;

  5. union {
  6.   int I;
  7.   shortreal f;
  8. } N;


复制代码


如Chisel中的Bundle:




  1. import chisel3._

  2. class GCD extends Module {
  3.   val io = IO(new Bundle {
  4.     val a  = Input(UInt(32.W))
  5.     val b  = Input(UInt(32.W))
  6.     val e  = Input(Bool())
  7.     val z  = Output(UInt(32.W))
  8.     val v  = Output(Bool())
  9.   })
  10.   val x = Reg(UInt(32.W))
  11.   val y = Reg(UInt(32.W))
  12.   when (x > y)   { x := x -% y }
  13.   .otherwise     { y := y -% x }
  14.   when (io.e) { x := io.a; y := io.b }
  15.   io.z := x
  16.   io.v := y === 0.U
  17. }


复制代码


有一个复合数据结构,即可把Module的input/output参数简化很多。
 楼主| 发表于 2018-9-17 10:53:26 | 显示全部楼层
本帖最后由 wjcdx 于 2018-9-17 10:59 编辑

程序 = 数据 + 算法

Module可以通过子模块来简化逻辑的构建;
数据也需要用户使用primitive data type构建data structure来自行定义数据类型,以简化数据的表达。

有这两个方面,即可以组成基本的程序编写语言。在Verilog即为基本的hardware modeling language。
缺少哪一方面都是缺憾。
发表于 2018-9-17 14:52:02 | 显示全部楼层
VHDL有的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 07:40 , Processed in 0.014601 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表