711|5

7938

帖子

20

资源

版主

请教一个verilog的问题 [复制链接]

本人FPGA小白一枚,现在有一个verilog的问题想请教

比如有一个输入数据

input   [16:0] REG

为了方便使用,现在想把REG拆开,比如

a = REG[16:8];

b = REG[7:0];

 

我能想到下边这种方式,不知道这样做对不对,如果不对应该怎么做,谢谢?

wire a;

wire b;

assign a[16:8] = REG[16:8];

assign b16:8] = REG[7:0];

 

另外再问一下,为什么使用define定义的“a”在always里使用会提示没有声明

`define a REG[16:8]

此帖出自FPGA/CPLD论坛
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复

422

帖子

0

资源

一粒金砂(高级)

应为a是wire型

点评

你是说define那个问题吗?  详情 回复 发表于 2020-12-15 12:43

回复

7938

帖子

20

资源

版主

你是说define那个问题吗?

个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复

2214

帖子

0

资源

裸片初长成(初级)

没有看懂你的意思

但是有几个问题。

1、wire a  表示a是一根线,但是后边使用a[16:8],表示8根线

2、REG最好不要用,好像编译环境有可能会将其认为是一个特定字符用。

点评

确实数据宽度没弄对,前边定义成一根线了,多谢   我想实现的是 举个栗子 输入一个16bit的数据REG 其中高8位代表地址,低8位代表数据 使用时如果使用REG[16:8] 和REG[7:0]看起来不直观 所  详情 回复 发表于 2020-12-15 14:09

回复

7938

帖子

20

资源

版主

heningbo 发表于 2020-12-15 13:46 没有看懂你的意思 但是有几个问题。 1、wire a  表示a是一根线,但是后边使用a[16:8],表示8根 ...

确实数据宽度没弄对,前边定义成一根线了,多谢

 

我想实现的是

举个栗子

输入一个16bit的数据REG

其中高8位代表地址,低8位代表数据

使用时如果使用REG[16:8] 和REG[7:0]看起来不直观

所以想把他们定义成符号

比如ADDR = REG[16:8],DATA=REG[7:0]

这样在写代码时直接使用ADDR和DATA就可以了

 

C语言可以直接使用define来定义 DATA ADDR[18:6]

但是我在verilog里使用时提示ADDR没有声明

 

点评

你要定义一个 reg [7:0] ADDR;的寄存器。 毕竟是两种语言。 所以要承认他们的不同点。  详情 回复 发表于 2020-12-16 09:24
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复

2214

帖子

0

资源

裸片初长成(初级)

littleshrimp 发表于 2020-12-15 14:09 确实数据宽度没弄对,前边定义成一根线了,多谢   我想实现的是 举个栗子 输入一个16bi ...

你要定义一个 reg [7:0] ADDR;的寄存器。

毕竟是两种语言。

所以要承认他们的不同点。


回复
您需要登录后才可以回帖 登录 | 注册

最新文章 更多>>
    关闭
    站长推荐上一条 1/8 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表