2013-05-28 30 views
0

我努力使用泛型爲組件的接口(port)定義記錄。在一個較老的問題中,我已經指出使用類型泛型。但是我不知道如何訪問記錄的字段。 Here一個答案用型仿製藥的使用記錄是促進在類型通用中使用記錄

假設以下組件:

entity genericInput is 
    generic(
     type recordType 
    ); 
    port(
      result: integer; 
     port: in recordType 
    ); 
end entity; 

architecture behav of genericInput is 
begin 
    result <= port.part1; 
end architecture; 

而這個實例:

type myRecord is record 
    part1: integer; 
    part2: std_logic_vector(1 to 100) 
end record; 

inst: genericInput 
    generic map(recordType <= myRecord) 
    port map(...) 

我從ModelSim的得到一個編譯錯誤:

** Error: ****.vhd(21): Unknown expanded name. --line on which i attempt port.part1 
** Error: ****.vhd(22): VHDL Compiler exiting 

如何訪問記錄的字段supp假設記錄始終有一個該名稱的字段(vhdl2008可用)? (我不想改變記錄中矢量的寬度)?


改寫問:什麼是創紀錄的載體整合與一般寬度爲實體的端口的最佳方式?

回答

1

第一:

  • PORT是一個關鍵字。您不能將其用作您的端口的名稱。如果您在發佈論壇之前修改代碼,那麼如果您也對其進行測試,則不勝感激。 (Make it VETSMOD
  • 您正在使用哪個版本的ModelSim?你確定它支持VHDL 2008嗎?你確定它支持實體中的泛型嗎?

回答你的問題:

實體(和架構)裏面,沒有人知道關於數據類型。您只能通過作爲通用參數傳遞的函數或過程來訪問它。不過,目前還不知道ModelSim真的支持了多少。

+0

什麼是'VETSMOD'?對不起,我沒有測試修剪過的代碼。我使用的是Modelsim 10.2,它支持vhdl 2008。是的,它支持類型泛型,當我嘗試訪問記錄時,問題只會發生。你是對的,但我想我明確表示了我的意見。 – ted

+0

我更新了我的問題,雖然我完全理解了你描述的問題,但我正在尋找一種解決問題的方法,以嚮導體顯示dynmaic寬度(參見上面問題的底部)。在另一個說明中,我喜歡你的eclipse插件。 – ted

+0

好吧,谷歌告訴我有關[vetsmod](http://www.sigasi.com/content/vetsmod-get-better-feedback-your-vhdl-code-snippets) – ted

相關問題