微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 怎么设计寄存器啊?

怎么设计寄存器啊?

时间:10-02 整理:3721RD 点击:
最简单的办法是用reg [31:0] abc_reg;定义,但是如果分个小模块为配置模块,要设计寄存器应该用ram实现,但是配置好寄存器后模块内部怎么读寄存器的值呢?

假设你的模块是由外部的APB来访问,该寄存器的偏移地址为 20;读写都可以用APB总线,至于你内部也可以用其他的方式来用这个信号,比如,可以连到端口上直接让其他模块用。
reg [31:0] abc_reg;
always@(posedge clk or .......)
...
if((addr == 20) & .......)
   abc_reg <= wdata;
...

always@(*)
case(addr)
...
20  :  rdata = abc_reg;
...

学习了,谢谢
&pid=3558560&ptid=233088]1# bbpfancy

看了后有点感觉,谢谢

但是比如我内部划分模块,定义了以下几个模块,一个是寄存器处理模块,一个是数据流处理模块。有很多寄存器,全部放在端口连到数据处理模块,岂不是要很多根信号线?这样好像不好吧?

那你做一个通信接口吧,两边的模块能够识别这个通信协议就可以用少量的信号来实现交互了
当然,这样的做法需要注意performance

统一楼上的

第一种是根据寄存器的原理用硬件描述语言设计,第二种是利用宏模块,简单实用

“岂不是要很多根信号线?”
如果是ASIC或FPGA内部,你管他有多少根信号?

将reg挂到总线上就可以外部访问了

关注中 !111

写的好不错

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top