2017-02-23 28 views
2

當我綜合使用Yosys和阿拉克尼-PNR一個空的電路,我得到一些不規則位:瞭解比特流iCE40 I/O磚

.io_tile 6 17 
IoCtrl IE_1 

.io_tile 6 0 
IoCtrl REN_0 
IoCtrl REN_1 

這也是我能對其他文件的一部分生成到目前爲止。由於未使用的I/O瓦片具有兩個IE位設置,我讀這爲:

  • 爲IE/REN塊6 17 0,輸入緩衝器被啓用
  • 爲IE/REN塊6 0 0,輸入緩衝器使能,並且上拉電阻被禁用
  • 爲IE/REN塊6 0 1,輸入緩衝器被啓用和上拉電阻器被禁用

然而,根據文檔,沒有IE/REN塊6 17 0. 這些位的含義是什麼?如果塊6 17 0的IE位由於該塊不存在而未被置位,爲什麼其他不存在的塊的位未被置位?其他IE/REN塊似乎對應於I/O塊6 0 1和7 0 0.這些塊做了什麼,以及爲什麼它們總是被配置爲輸入?

SB_IOtechnology library條目沒有提及IE位。它與PIN_TYPE參數設置有什麼關係?

當我使用I/O引腳作爲輸入時,REN位被置位(禁止上拉電阻)。這表明上拉電阻主要用於保持未使用的引腳懸空,而不是爲有條件連接的輸入(例如按鈕)提供上拉電阻。這個假設是否正確?爲此目的使用內部上拉電阻可以嗎?

技術庫說以下內容:

defparam IO_PIN_INST.PULLUP = 1'b0; 
// By default, the IO will have NO pull up. 
// This parameter is used only on bank 0, 1, 
// and 2. Ignored when it is placed at bank 3 

這是否意味着銀行3沒有上拉電阻,或者僅僅是他們不能用Verilog重新啓用可以?如果我手動清除ASCII碼流中的那一位會發生什麼? (我會試試這個,但是iCEstick評估板沒有在第3組上打開任何引腳 - 這是巧合 - 我不確定是否還想要硬件。)

當我使用I/O引腳作爲輸出,IE位不被清除,但輸入引腳功能被設置爲PIN_INPUT。這有什麼影響,爲什麼這樣做?

回答

2

未使用的IO引腳的默認行爲是啓用上拉電阻並禁用輸入使能。在iCE40 1k芯片上,這意味着IE_0和IE_1被設置,並且REN_0和REN_1在未使用的IO瓦片中被清除。 (在8K芯片上,IE_ *爲高電平有效,即所有位在8k芯片上的未使用IO磁貼中清除。)

icebox_explain默認隱藏具有「無趣」內容的磁貼。 (運行icebox_explain -A以禁用此功能。)

看起來像arachne-pnr不會爲當前程序包中不可用的IO引腳設置這些位。因此,在某些IO塊中包含一些不尋常的位模式,這些塊包含未連接到任何封裝管腳的IO模塊的IE/REN位。

這是一個「正常的」未使用的IO瓦看起來像在1K架構:

$ icebox_explain -mAt '1 0' example.asc 
Reading file 'example.asc'.. 
Fabric size (without IO tiles): 12 x 16 

.io_tile 1 0 
    B0 ------------------ 
    B1 ------------------ 
    B2 ------------------ 
    B3 ------------------ 
    B4 ------------------ 
    B5 ------------------ 
    B6 ---+-------------- 
    B7 ------------------ 
    B8 ------------------ 
    B9 ---+-------------- 
B10 ------------------ 
B11 ------------------ 
B12 ------------------ 
B13 ------------------ 
B14 ------------------ 
B15 ------------------ 
IoCtrl IE_0 
IoCtrl IE_1 

難道是確定使用內部上拉電阻用於這一目的?

是的。

SB_IO的技術庫條目沒有提及IE位。它與PIN_TYPE參數設置有什麼關係?

當從SB_IOD_IN_0D_IN_1被連接到的東西,那麼這意味着IE。

當我使用的I/O引腳作爲輸出,IE位未被清除

注意,IE是1K芯片活性低和高有效上8K芯片。當您在1k器件上使用I/O引腳作爲輸出引腳時,應該設置相應的IE位,否則應該清零。

+0

根據'chipdb-1k.txt',I/O塊6 0 1和7 0 0不是未連接的;它們分別連接到TCE144引腳49(GBIN5/PIO2_01)和50(GBIN4/PIO2_02),它們不在iCEstick上使用。 - 第3排上的上拉電阻怎麼樣?爲什麼在輸出引腳上輸入引腳功能設置爲PIN_INPUT(「IOB_ PINTYPE_0」),IE位有什麼作用? – rlutz

+0

問題是關於IE/REN位而不是IO塊。沒有1:1的關係。請參見chipdb文件中的.ieren。另外:我不能回答「爲什麼」的問題:我沒有設計芯片。你必須問萊迪思。 – CliffordVienna

0

我找到了解釋,所以我在這裏分享以供將來參考:

.io_tile 6 17 
IoCtrl IE_1 

I/O塊16 7 0連接到一根鋼釘一些軟件包,但不是在TQFP封裝。

.io_tile 6 0 
IoCtrl REN_0 
IoCtrl REN_1 

這對應於I/O塊6 0 1和7 0 0(銷49和50)進入它的輸入路徑中的PLL PORTA和PORTB時鐘分別被饋送。