always@* 和 assign的區別


用了很久的mc8051,一直以為mc8051的外擴接口有問題,只能寫出不能讀入。

嘗試了很多種方案,包括外部接口使能打一拍讀入都試了,都不行。

突然發現數據讀入一直都用的assign,換成always@*會是什么樣,居然TMD好使了。原始代碼

// assign xdata_o =ramx_en ? ramx_data:
// portA_en_d? portA_i_d:    //portA_i不用打一拍,因為它是有外部提供的,如果接按鍵的話,持續值肯定超過一個總線時鍾
// portA_en ? portA_i:
// xdata_o;

換成

always@(*)
begin
if(ramx_en) xdata_o=ramx_data;
//if(portA_en)xdata_o=portA_i;    //此處不起作用,刪掉
if(portA_en_d)xdata_o=portA_i;
end

 

注:portA_en_d為portA_en在總線時鍾上的打一拍

居然能正常運行了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM