clk timign問題跟判斷條件請教
时间:10-02
整理:3721RD
点击:
各位大大好 小的最近在練習FPGA
問題A:目前常看到的CLK用法如下方1所示1. always@(posedge CLOCK_50, negedge reset) begin
if(!reset)
else if(....)
end
改用方法2 如下所示 則這個always不會正常work 請問各位大大這甚麼原因呢?
2. always@(posedge CLOCK_50, posedge reset) begin
if(reset)
else if(....)
end
問題B:if (Y < (duty*movetime/100) ) //其中duty是變數(reg型態) movetime是常數=50000 以parameter宣告之
請問各位大大 判斷用的條件可以用除法嗎? 因為我改用duty*500 (500=movetime/100) 用modelsim看訊號 可以正常運作
還請各位大大不吝指教 謝謝大家
問題A:目前常看到的CLK用法如下方1所示1. always@(posedge CLOCK_50, negedge reset) begin
if(!reset)
else if(....)
end
改用方法2 如下所示 則這個always不會正常work 請問各位大大這甚麼原因呢?
2. always@(posedge CLOCK_50, posedge reset) begin
if(reset)
else if(....)
end
問題B:if (Y < (duty*movetime/100) ) //其中duty是變數(reg型態) movetime是常數=50000 以parameter宣告之
請問各位大大 判斷用的條件可以用除法嗎? 因為我改用duty*500 (500=movetime/100) 用modelsim看訊號 可以正常運作
還請各位大大不吝指教 謝謝大家
复位?
大大你好 請問大大復位? 是指CLK用法有誤嗎?
第一个问题:不知道你外围代码是怎样的,仅这里看的话你改变了reset 的有效电平,估计你是外面reset 的电平没有变,逻辑始终处于复位状态,当然不工作啦。
第二个问题:先回答你的问题,简单点说,你这里可以用。具体的话判断条件和除法没啥必然关系。对于verilog 和FPGA 来说,语法都是有适用范围和条件的。你这里如果只做仿真也没啥了,如果要最后上FPGA 的话不推荐这样写。如果duty 是常数的话也还好,不是常数的话综合下来要看你软件设置了。
大胆猜测一下感觉你是新手直接上的。第一个问题像是没有基本的verilog 语法。第二个问题是没有FPGA 开发的相关概念。没猜错的话小编加油!做逻辑都是一点点来的。
GREAT
謝謝大大的解說呢 了解了
可是問題1部分 我都有用modelsim看訊號過 而改使用法二(輸入測試訊號不變) 則 always的reset不會觸發
而導自else if (...) 內的code不會動作
我reset訊號事先0後1的測試訊號 給一個正緣觸發 這樣子用
always(posedge clk, posedge reset) begin
if (reset)
else if (....)
end
我覺得應該會觸發if條件式才對? 還是因為這時候 抓到的reset值是0 所以if的條件是不成立呢?
謝謝大大唷
