这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Xilinx » 状态机的相关问题,懂得留步,呵呵

共17条 1/2 1 2 跳转至

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

菜鸟
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
对程序的造成什么样的影响啊。
我今天就改了,原来过不去的仿真,通过去了。详细见我中午发的帖子,呵呵 。
用示波器看波形,也没什么影响啊········
会对资源有影响不?大吗 ?



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

专家
2011-04-12 19:27:09     打赏
2楼
后面的以clk为基准!!

菜鸟
2011-04-12 19:56:24     打赏
3楼
那我要是在第一个中的状态里面写
s0:next <= s1;
s1:next<= s2;
这样的话,是不是意味这两种写法等价啊····

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

工程师
2011-04-13 00:13:55     打赏
4楼

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


工程师
2011-04-13 09:47:19     打赏
5楼

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


菜鸟
2011-04-13 09:56:54     打赏
6楼
 我的状态转换是另外的一段程序啊
always @ (posedge clk or posedge reset )
current_state<=next_state;
这样不就和你说的一样了嘛?也没有分别了吧。

菜鸟
2011-04-13 10:01:50     打赏
7楼
不是有两种仿真的形式嘛,我用的是第一种,激励就是给输入加个波形嘛。第二种才是给测试写程序的啊~~~两者应该是等效的啊····

工程师
2011-04-13 10:06:54     打赏
8楼
首先,不推荐在组合逻辑中使用“<=”赋值!

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

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

工程师
2011-04-13 10:09:58     打赏
9楼

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


工程师
2011-04-13 10:37:19     打赏
10楼

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


共17条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]