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

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

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1029|回复: 11

[求助] 关于触发与握手

[复制链接]
发表于 2024-6-11 11:12:04 | 显示全部楼层 |阅读模式

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

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

x
请问大佬们,我想实现触发一次always块对sram进行多次读写访问,用repeat(n)@(握手信号)来实现一次触发多次握手符合设计规范吗
发表于 2024-6-11 16:30:30 | 显示全部楼层
这是仿真程序么?
 楼主| 发表于 2024-6-12 10:28:18 | 显示全部楼层


zsftm 发表于 2024-6-11 16:30
这是仿真程序么?


感谢回复,想问的是在设计模块中这样写合不合规范
发表于 2024-6-12 13:54:34 | 显示全部楼层


关东煮游泳 发表于 2024-6-12 10:28
感谢回复,想问的是在设计模块中这样写合不合规范


repeat是不可综合的。
所以楼上问你,你这是在仿真用例中给设计模块生成一个触发信号,还是设计一个模块需要生成触发信号呢?

如果是仿真用例,用repeat生成是可以的。
如果是设计模块里要生成触发信号,使用repeat是不行的。那你应该使用状态机来生成触发信号,具体的触发逻辑取决于你想要实现的功能。对于你这种不太熟练的新手来说,比较好的方式是应该先把几个信号的时序图画出来,再根据时序图梳理每个信号的跳转逻辑,最后再写代码
 楼主| 发表于 2024-6-12 14:38:53 | 显示全部楼层


小鸟探戈 发表于 2024-6-12 13:54
repeat是不可综合的。
所以楼上问你,你这是在仿真用例中给设计模块生成一个触发信号,还是设计一个模块 ...


您好,您可能误解了我的意思,我想应该需要将问题描述的更仔细些,目前的情况是出现在设计模块中,某个信号触发了一个always块,在这个always块中,有一个repeat语句,在这个repeat语句的敏感事件表中,我填入了握手信号的上升沿触发,这样实现的一次触发多次握手是否符合设计规范?另外,repeat重复次数固定的情况下应该是可以综合的吧
发表于 2024-6-12 16:17:22 | 显示全部楼层


关东煮游泳 发表于 2024-6-12 14:38
您好,您可能误解了我的意思,我想应该需要将问题描述的更仔细些,目前的情况是出现在设计模块中,某个信 ...


repeat和for一样,是把相同的电路复制n份,n为定值。在设计中我一般只使用了for,repeat没用过。

另外,你的问题我也没明白,最好你把源码附上,我也学习一下这是个啥情况。
 楼主| 发表于 2024-6-12 16:34:48 | 显示全部楼层


neXtime 发表于 2024-6-12 16:17
repeat和for一样,是把相同的电路复制n份,n为定值。在设计中我一般只使用了for,repeat没用过。

另外, ...



                               
登录/注册后可看大图



您好,这是我的源码,其中vaild_out_sram是sram输出的握手信号,接收到此信号的上升沿后,将sram的九个输入赋值给此module内置的reg,并改变发送给sram的指令,进而等待下一次握手
 楼主| 发表于 2024-6-12 16:43:39 | 显示全部楼层


neXtime 发表于 2024-6-12 16:17
repeat和for一样,是把相同的电路复制n份,n为定值。在设计中我一般只使用了for,repeat没用过。

另外, ...



                               
登录/注册后可看大图


感谢您的回复,这是我的源码,大体逻辑如下,此段代码在一个always块中,当这个always块被触发并运行到此段代码时,敏感时间表等待从sram来的上升沿的握手信号,当接收到代表“读出数据成功”的信号后,开始给模块内寄存器赋值并更改指令进行下一次读取数据
发表于 2024-6-13 08:45:01 | 显示全部楼层
本帖最后由 neXtime 于 2024-6-13 08:50 编辑


关东煮游泳 发表于 2024-6-12 16:43
感谢您的回复,这是我的源码,大体逻辑如下,此段代码在一个always块中,当这个always块被触发并运行到 ...


这代码不可综合吧,我没用过repeat我也说不准,不过者应该可以改为for的形式的
发表于 2024-6-13 10:15:10 | 显示全部楼层


关东煮游泳 发表于 2024-6-12 16:43
感谢您的回复,这是我的源码,大体逻辑如下,此段代码在一个always块中,当这个always块被触发并运行到 ...


不明白你这个repeat(10)是想做什么?等待10次valid_out_sram的上升沿吗?如果是等待10次上升沿那你得加一个计数器搜集valid的次数的,不能用repeat表示。

而且你说你这段代码在一个always块里面?为什么always块里面还要再加一个敏感列表?
其实写RTL很简单的,就那么几种语法(always块写时序逻辑,always块写组合逻辑,assign写组合逻辑,各种if、case,合理使用的for循环,generate)就可以实现所有的功能了。但我以写了快10年RTL的经验看,从没见过这样写的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-4-21 21:57 , Processed in 0.067455 second(s), 7 queries , Gzip On, MemCached On.

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