VHDL编程风格课件.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

(3)方式3Signalcurren_state,next_state:std_logic_vector(1downto0);Constantst0:std_logic_vector(1downto0):=”00”;Constantst1:sta_logic_vector(1donwot0):=”01”;Constantst2:sta_logic_vector(1donwot0):=”10”;Constantst3:sta_logic_vector(1donwot0):=”11”;方式3比方式1要好,因為方式3的可讀性比方式1要好。但是方式3的修改沒有方式2方便。狀態機的編碼在ISE中有6種,其中常用的是順序編碼和一位熱碼。在ISE中可以通過修改綜合約束來指定狀態機的編碼。方法如下:①綜合前,在Processforcurrentsources窗口中選中Synthesize,單擊滑鼠右鍵,彈出下拉菜單,選中Properties(屬性)。如圖7.1.5所示。圖7.1.5綜合Properties(屬性)②在彈出的菜單中有3個選項欄,選中HDLoptions選項欄,如圖7.1.6所示。在Propertiesname(屬性名)下的第一項便是FSMEncodingAlgorithm(有限狀態機編碼演算法),在Value中打開下拉菜單,可以看到幾種編碼方式。其中Auto(自動)為ISE的缺省值,在一般情況下,如果目標晶片是FPGA,那麼XST會將狀態機編碼為One-Hot(一位熱碼)。使用One-Hot(一位熱碼)的好處是,狀態轉換快,狀態解碼簡單。採用Sequential(順序編碼)的好處是,所需要的寄存器少,冗餘狀態相對要少,系統進入其他狀態的機會就更少。還有一個比較常用的編碼方式,User(用戶)編碼方式。在前面講過,設計者是可以手動編碼的,只要加上Attribute語句便可,這裏給出一個例子:需要提醒大家注意的是,HDLOptions中的設置的優先順序要高於用戶的attribute屬性。也就是說,如果使用了attribute語句進行了手動編碼,但是在FSMEncodingAlgorithm中選擇的是Gray(格雷)碼,那麼實際綜合的效果是Gray(格雷)編碼。例子:typeSTATE_TYPEis(S1,S2,S3,S4);attributeENUM_ENCODING:STRING;attributeENUM_ENCODINGofSTATE_TYPE:typeis1110110110110111;上面的四個狀態S1,S2,S3,S4其實也是一位熱碼,是用‘0’作為熱碼。選擇User編碼,那麼綜合後的實際狀態機編碼就是設計者在attribute中描述的狀態碼字。圖7.1.6編碼方式的設定3.多進程狀態機在狀態機的描述中,經典的應該屬於3進程狀態機,基本結構可以由下麵的模型描述:SYNC_PROC:process(CLOCK,RESET)--同步進程beginif(RESET=1)then--現態=初始狀態;elsif(CLOCKeventandCLOCK=1)then--現態=次態;endif;endprocess;COMB_PROC1:process(--現態,輸入信號)–狀態轉化進程begincase現態iswhen初始狀態=if(--轉換條件)then--次態賦值endif;--其他所有狀態轉換的描述endcase;endprocess;COMB_PROC2:process(現態,輸入端)--輸出描述進程BeginCase現態When初始狀態=if(輸入端的變化)then--輸出賦值--其他所有狀態下輸出的描述endcaseendprocess;或者:COMB_PROC2:process(現態,輸入端)--輸出描述進程BeginCase現態

文档评论(0)

爱遛弯的张先生 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档