完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
两个快速问题:
1)我有以下状态图: 如您所见,一些状态转换是明确确定的,一些转换是任意的。 例如,当处于空闲状态时,下一状态可以是就绪状态或保持空闲状态。 我怎样才能在VHDL中对此进行建模(不是一切,只是任意部分)? (在NuSMV中,这是通过非确定性赋值完成的:state = s_idle:{s_ready,s_idle}) 2)在初始化时分配信号值是否可以接受,即: ......的建筑 信号a:std_logic_vector(3 downto 0):= X“A”; 开始... 我猜这只是异步信号,在clk上更新(如寄存器),对吧? 它们应该用进程初始化(clk,reset)。 这是不好的编码实践,还是特定于软件(Xilinx,Altera ......)? 如果我们对组合电路进行建模,那么初始化根本不重要,我是对的吗? |
|
相关推荐
7个回答
|
|
我真的不知道“任意”是什么意思(在这种情况下)。
必须有一些已知的条件迫使机器从一种状态到另一种状态。 在硬件中考虑一下 - 你如何获得任意信号? 2.对于现代Xilinx FPGA,可以对有效充当上电复位分配的信号进行初始化声明。 我已经看到一些谴责它的文献(它可以使代码不可移植,但是值得注意的是,至少对于Xilinx而言,为每个FF分配芯片周围的重置可能会成为PAR工具的一项艰巨任务 并利用这种设备架构,可以缓解这种痛苦。 问候, 霍华德 ----------“我们必须学会做的事情,我们从实践中学习。” - 亚里士多德 |
|
|
|
1)我的意思是,如果有一种方法可以在我的帖子中合成图表。
正是如此,当处于空闲状态时,它可以随意保持闲置或准备就绪。 如果它无法合成,有没有办法只为模拟做到这一点。 只是通过测试平台运行它,看看该模块是否表现得如此,完整的设计是否正确? 2)感谢您的解释。 |
|
|
|
>只需通过测试平台运行它,看看该模块是否表现得如此,
如果它是随机的那么你怎么知道? 你能解释为什么所有的状态转换都不知道吗? ------您是否尝试在Google中输入问题? 如果没有,你应该在发布之前。太多结果? 尝试添加网站:www.xilinx.com |
|
|
|
因为设计所做的并不重要。
我是学生,我们正在使用NuSMV做模型简单的组合和顺序电路,然后正式验证它们。 所以,现在我正在尝试使用VHDL重新创建练习并使用PSL正式验证它们。 这是关于验证。 在那里,完全披露......现在,它可以用VHDL建模吗? 如果没有合成,那么至少是为了模拟。 是否有一些随机状态赋值或VHDL属性的函数? 并且您会知道它是否按计划工作,因为您将在您面前拥有模拟的ISIM波形和我在第一篇文章中提供的单向图,因此您可以比较它们。 |
|
|
|
evilpascal写道:
因为设计所做的并不重要。 我是学生,我们正在使用NuSMV做模型简单的组合和顺序电路,然后正式验证它们。 所以,现在我正在尝试使用VHDL重新创建练习并使用PSL正式验证它们。 这是关于验证。 如果没有完全定义的东西你就无法验证。 你是学生。 为自己解决为什么这是真的。 显示所有工作。 在那里,完全披露......现在,它可以用VHDL建模吗? 如果没有合成,那么至少是为了模拟。 您无法在VHDL或任何其他设计工具中对未完全定义的内容进行建模。 告诉我导致状态转换的原因,我可以完全模拟系统。 是否有一些随机状态赋值或VHDL属性的函数? VHDL中存在生成随机数的函数。 真实的状态机不会有随机转换。 你必须先验地定义它们。 并且您会知道它是否按计划工作,因为您将在您面前拥有模拟的ISIM波形和我在第一篇文章中提供的单向图,因此您可以比较它们。 我认为你误解了验证的作用。 验证设计时,您已经知道一组输入的预期结果。 其中一些输入可能是非法的,验证表明机器是否正确处理了这些非法输入。 有关验证的更多信息,Janick Bergeron撰写的“编写测试长凳”一书提供的信息比您可能想要了解的更多... ----------------------------是的,我这样做是为了谋生。 |
|
|
|
感谢您的图书推荐,我一定会查看。
我目前正在阅读Pong P. Chu的“使用VHDL进行RTL硬件设计”,我非常喜欢它。 你有什么想法,如果你有,你可以推荐一些其他优质的书籍。 回到主题。 正如我之前提到的,我们一直在使用NuSMV对图形进行建模,如下所示: MODULE process_beh(已授予) VAR state:{s_idle,s_ready,s_work}; state_coded:word [2]; 分配 init(state):= s_idle; 下一个(州):= 案件 ----> state = s_idle:{s_ready,s_idle}; //下一个状态是空闲或准备好的 state = s_ready& granted = TRUE:s_work; state = s_ready& grant = FALSE:s_ready; ----> state = s_work:{s_work,s_idle}; //下一个状态是工作还是空闲 ESAC; state_coded:= 案件 state = s_idle:0b2_00; state = s_ready:0b2_01; state = s_work:0b2_10; ESAC; 这在NuSMV中是可以接受的。 然后我们将正式验证它: SPEC AG((state = s_work) - >(state!= s_work)) 这只是一个例子,所以不要太认真。 我不需要可合成的代码,我不会把它放在板上。 我只需要将其建模为图形并能够观察这些任意转换。 |
|
|
|
说实话,我并不是要表示不屑或粗鲁,我想不出HDL中的任何事情都比你想要达到的要简单。
您必须记住,HDL不是一种编程语言,而是字面上代表物理硬件。 由于硬件中没有任意信号,状态或条件(尽管存在未定义的电源开启),因此无法对其进行建模。 你写的是你所拥有的东西不会被合成或放在板上,那么HDL的重点是什么? 即使作为NuSMV验证的学术练习,它也没有任何有用的结果。 我认为最好定义过渡并尝试验证整个指定的模型,而不是在这个模型上追逐你的尾巴。 ----------“我们必须学会做的事情,我们从实践中学习。” - 亚里士多德 |
|
|
|
只有小组成员才能发言,加入小组>>
2416 浏览 7 评论
2821 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2292 浏览 9 评论
3372 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2459 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
1150浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
582浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
448浏览 1评论
2003浏览 0评论
727浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 21:33 , Processed in 1.582453 second(s), Total 88, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号