版主: 51FPGA

分享到:
共17条 1/2 1 2 »   

状态机的相关问题,懂得留步,呵呵

    [您是本帖的第3152位阅读者]
只为吸引你
我是GG
高级会员

最后登陆时间:2011-10-09 20:36:15

直达楼层
1# 发表于 2011-04-12 18:18:12
废话不多说,
比如说我把
always@(counter or reset or data)begin
s0:next = s1;
s1:next = s2;
---------------
end
改成了
always@( posedge clk or posedge reset) begin
---------------------
end
对程序的造成什么样的影响啊。
我今天就改了,原来过不去的仿真,通过去了。详细见我中午发的帖子,呵呵 。
用示波器看波形,也没什么影响啊········
会对资源有影响不?大吗 ?


关键词:状态机    相关    问题    懂得    留步    呵呵    

改变自己。

RE: 状态机的相关问题,懂得留步,呵呵

halibote523
我是GG
高级会员

最后登陆时间:2015-01-07 18:24:15

2# 发表于 2011-04-12 19:27:09
后面的以clk为基准!!

断肠人在天涯!。

RE: 状态机的相关问题,懂得留步,呵呵

只为吸引你
我是GG
高级会员

最后登陆时间:2011-10-09 20:36:15

3# 发表于 2011-04-12 19:56:24
halibote523的原帖
后面的以clk为基准!!

那我要是在第一个中的状态里面写
s0:next <= s1;
s1:next<= s2;
这样的话,是不是意味这两种写法等价啊····

----
还有就是为什么第一种写法在仿真时,不能通过呢。和testbench有关吗?我没改动过testbench中的东西,是不是还得加激励的之类的东西啊。

改变自己。

此贴由只为吸引你于2011-04-12 20:06:02最后编辑

RE: 状态机的相关问题,懂得留步,呵呵

jeffreychen
性别保密
高级会员

最后登陆时间:2014-08-30 18:41:21

4# 发表于 2011-04-13 00:13:55

狀態機沒有使用 Level 的方式去做 狀態的改變!
這樣會使得狀態機內的狀態一直在改變!
只要 Counter ,Reset , Data 變化,即改變狀態
有可能你模擬的 Pattern 變化很慢!
或是你的 TestBench 內寫的 Counter Data 
剛好都和 CLK 的變化一樣
所以你覺得結果好像一樣
這樣不易掌控狀態的變化
也許你目前的 Code 很簡單
所以沒有什麼大問題
建議還是使用 CLK 來做 狀態機內的狀態變化!


jeffrey。

RE: 状态机的相关问题,懂得留步,呵呵

dreamjsc
我是GG
高级会员

最后登陆时间:2012-06-04 16:42:28

5# 发表于 2011-04-13 09:47:19
halibote523的原帖
后面的以clk为基准!!
只为吸引你的原帖
那我要是在第一个中的状态里面写
s0:next <= s1;
s1:next<= s2;
这样的话,是不是意味这两种写法等价啊····

----
还有就是为什么第一种写法在仿真时,不能通过呢。和testbench有关吗?我没改动过testbench中的东西,是不是还得加激励的之类的东西啊。

仿真时肯定需要对输入信号加激励的,不然仿真要testbench干啥!


大山里的娃儿。

RE: 状态机的相关问题,懂得留步,呵呵

只为吸引你
我是GG
高级会员

最后登陆时间:2011-10-09 20:36:15

6# 发表于 2011-04-13 09:56:54
jeffreychen的原帖

狀態機沒有使用 Level 的方式去做 狀態的改變!
這樣會使得狀態機內的狀態一直在改變!
只要 Counter ,Reset , Data 變化,即改變狀態
有可能你模擬的 Pattern 變化很慢!
或是你的 TestBench 內寫的 Counter Data 
剛好都和 CLK 的變化一樣
所以你覺得結果好像一樣
這樣不易掌控狀態的變化
也許你目前的 Code 很簡單
所以沒有什麼大問題
建議還是使用 CLK 來做 狀態機內的狀態變化!


 我的状态转换是另外的一段程序啊
always @ (posedge clk or posedge reset )
current_state<=next_state;
这样不就和你说的一样了嘛?也没有分别了吧。

改变自己。

RE: 状态机的相关问题,懂得留步,呵呵

只为吸引你
我是GG
高级会员

最后登陆时间:2011-10-09 20:36:15

7# 发表于 2011-04-13 10:01:50
halibote523的原帖
后面的以clk为基准!!
只为吸引你的原帖
那我要是在第一个中的状态里面写
s0:next <= s1;
s1:next<= s2;
这样的话,是不是意味这两种写法等价啊····

----
还有就是为什么第一种写法在仿真时,不能通过呢。和testbench有关吗?我没改动过testbench中的东西,是不是还得加激励的之类的东西啊。
dreamjsc的原帖

仿真时肯定需要对输入信号加激励的,不然仿真要testbench干啥!


不是有两种仿真的形式嘛,我用的是第一种,激励就是给输入加个波形嘛。第二种才是给测试写程序的啊~~~两者应该是等效的啊····

改变自己。

RE: 状态机的相关问题,懂得留步,呵呵

dreamjsc
我是GG
高级会员

最后登陆时间:2012-06-04 16:42:28

8# 发表于 2011-04-13 10:06:54
halibote523的原帖
后面的以clk为基准!!
只为吸引你的原帖
那我要是在第一个中的状态里面写
s0:next <= s1;
s1:next<= s2;
这样的话,是不是意味这两种写法等价啊····

----
还有就是为什么第一种写法在仿真时,不能通过呢。和testbench有关吗?我没改动过testbench中的东西,是不是还得加激励的之类的东西啊。

首先,不推荐在组合逻辑中使用“<=”赋值!

其次,第一种写法,激励信号“counter or reset or data”在testbench中应该有变化才会有输出;第二种写法,激励信号“clk or reset”应该有变化才会有输出。

至于你改为第二种写法,没加时钟激励能出仿真结果,表示不理解!

大山里的娃儿。

RE: 状态机的相关问题,懂得留步,呵呵

dreamjsc
我是GG
高级会员

最后登陆时间:2012-06-04 16:42:28

9# 发表于 2011-04-13 10:09:58
halibote523的原帖
后面的以clk为基准!!
只为吸引你的原帖
那我要是在第一个中的状态里面写
s0:next <= s1;
s1:next<= s2;
这样的话,是不是意味这两种写法等价啊····

----
还有就是为什么第一种写法在仿真时,不能通过呢。和testbench有关吗?我没改动过testbench中的东西,是不是还得加激励的之类的东西啊。
dreamjsc的原帖

仿真时肯定需要对输入信号加激励的,不然仿真要testbench干啥!

只为吸引你的原帖
不是有两种仿真的形式嘛,我用的是第一种,激励就是给输入加个波形嘛。第二种才是给测试写程序的啊~~~两者应该是等效的啊····

现在理解了,第一种写法时,有没有给counter或data加激励?
第二种写法,能出仿真结果,应该给时钟加了激励的,对吧?当然激励不一定要通过testbench加!


大山里的娃儿。

RE: 状态机的相关问题,懂得留步,呵呵

jeffreychen
性别保密
高级会员

最后登陆时间:2014-08-30 18:41:21

10# 发表于 2011-04-13 10:37:19

總共有幾個狀態?
如果你的狀態不是很多
可以直接考慮用 DFFE 的方式去做狀態改變!
一級串一級的方式,每一級即表示一個狀態
不然這種狀態機太制式,我不太喜歡用!


jeffrey。

共17条 1/2 1 2 »   
快速回复主题
  • 匿名不能发帖!请先 [ 登陆 注册 ]