微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > clk timign問題跟判斷條件請教

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看訊號 可以正常運作

還請各位大大不吝指教 謝謝大家

复位?


大大你好 請問大大復位? 是指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的條件是不成立呢?


謝謝大大唷

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top