2011-03-02 12 views
5

XST aracı (araçları) kullanılarak sentezlenen Xilinx Virtex 5 FPGA için VHDL'de yazılmış, LUT'lerin ve dilimlerin bazı çok spesifik davranışlarını uygulamaya çalışıyorum. araçlarını infer aracına sahip olduğumu fark ettiğimde, ne demek istediğimi anlayamıyorum.Xilinx XST aracında LUT'ların ve dilimlerin nasıl kullanıldığını açıkça tanımlar mı?

Bir CLB 4 bunların tane olan Virtex5 6 girişli olan versiyonlarını, kullanımı bahsediyorum.

I açık bir şekilde ifade istiyorum: - tek CLB dilim içinde 4 LUT her girdilerinde - ilk 'MUXCY (C0) giriş belirtin - Rota 4 XORCYs 's' çıkışları - '4.' MUXCY (Cn) 'un GİRİŞ ÇIKIŞI - Belli bir sırayla CLB'nin her bir LUT girişini belirtebilirsiniz, çünkü bunlar, kasıtlı olarak kaskad ..

CLB' tüm giriş ve çıkışlar ile VHDL de ve bu harita muktedir ..

oldukça ağır ve sığınak belgelerini araştırdı 'T gerçekten

+0

değil tam bir cevap, sadece bir ipucu: Evet, bunun mümkün olduğunu düşünüyorum ve bunu "makro" deniyor. Xilinx belgesinde bir yerlerde tarif ediliyorlar (Biliyorum, çok büyük ve çok açık bir şekilde düzenlenmemiş). Tüm RTL bileşenlerini ve bunları çıkarmak için farklı yöntemleri açıklayan bir bölüm var. Xilinx kütüphanelerini ve bu makroları kullanarak bunu yapabilmelisiniz. – Deve

cevap

5

http://www.xilinx.com/support/documentation/sw_manuals/xilinx12_2/virtex5_hdl.pdf

bak. LUT6 açıklama ve örnekleme modülü (Verilog/VHDL) Sayfanın Saar açıkça bir LUT örneğini LUT6 kullanmak önerir 158.

+1

'a teşekkürler ama bu gece gittim ve bu gece sentezlemeye başladım ve harika çalışıyor. Ve LUT6_L ve _D ve _2 örneklemelerini kullanarak, bir CLB içinde istediğiniz sonuçları alacağınızdan emin olmanızın mümkün olduğunu düşünüyorum. Ben sadece LUT6_2 ve MUXCY kullandım ve istediğimi tam olarak alıyorum. – Nektarios

2

Sen RLOC ve BEL kısıtlamaları kullanılarak istenilen davranış elde etmek mümkün olabilir bir şey buldum. Sen VHDL de kısıtlamaları yerleştirebilirsiniz: Daha fazla ayrıntı için Xilinx kısıtları Kılavuzu'nda

VHDL Syntax 

Declare the VHDL constraint as follows: 
attribute bel : string; 

Specify the VHDL constraint as follows: 
attribute bel of {component_name| label_name}: {component|label} is {F|G|FFA|FFB|FFC|FFD|FFX|FFY|XORF|XORG|A6LUT|B6LUT|C6LUT|D6LUT|A5LUT|B5LUT|C5LUT|D5LUT}"; 

bak.

bazı örnek VHDL için de comp.arch.fpga bu yazı bakınız: LUT5/6 kişilik http://newsgroups.derkeiler.com/Archive/Comp/comp.arch.fpga/2008-05/msg00560.html

+0

Bu işe yarayabilirdi ama denemekte tereddüt ediyorum. Nedeni, DSP kaynaklarının kullanılmasını sağlamak için daha önce öznitelikleri kullanmayı denedim ve çok belirsiz buldu.Bazı durumlarda çalışacak, ancak diğerlerinde tamamen göz ardı ediliyor gibi görünüyor. Meslektaşlarım da tamamen aynı sorunlara koştular. Özellikle bir tasarım büyüdüğünde, özellik ayarlarının çoğunun güvenilmez olduğu görülmektedir. Cevabınız doğru olabilir, ancak deneyimlerimi paylaşıyorum. – Nektarios

6

üzerindedir. Teknoloji haritalamasını bir LUT_MAP kısıtlaması ile kontrol etmeyi tercih ediyorum. Daha az bakım gerektirir ve HDL kodunuz cihaz agnostik ve simülatör dostu kalır.

İşte bir örnek.

(* LUT_MAP="yes" *) 
module mux4(sel, a, b, c, d, o); 
input [1:0] sel; 
input  a; 
input  b; 
input  c; 
input  d; 
output reg o; 

always @* begin 
    case(sel) 
    2'b00: o <= a; 
    2'b01: o <= b; 
    2'b10: o <= c; 
    2'b11: o <= d; 
    endcase 
end 
endmodule 

Bu keyfi birleşimsel mantık yazmak ve bu (en fazla 6-girişine, bir çıkış) modülü tek LUT'da uygulanması gerektiği şeklindeki sentezini (XST) bilmemizi sağlar. Bunu KEEP_HIERARCHY ve RLOC kısıtlamaları ile birleştirirseniz, RPM'ler oluşturabilirsiniz (ilişkisel olarak yerleştirilmiş makrolar).

(* KEEP_HIERARCHY="true" *) 
module mux4x4p4(sel, a, b, c, d, o); 
input [1:0] sel; 
input [3:0] a; 
input [3:0] b; 
input [3:0] c; 
input [3:0] d; 
output [3:0] o; 

(* RLOC="X0Y0" *) 
mux4 m0(sel, a[0], b[0], c[0], d[0], o[0]); 
(* RLOC="X0Y0" *) 
mux4 m1(sel, a[1], b[1], c[1], d[1], o[1]); 
(* RLOC="X0Y0" *) 
mux4 m2(sel, a[2], b[2], c[2], d[2], o[2]); 
(* RLOC="X0Y0" *) 
mux4 m3(sel, a[3], b[3], c[3], d[3], o[3]); 
endmodule 

benim eski web sitesinde, www.fpgacpu.org üzerinde Veriyolları için devrine daha fazla bilgi bulunmaktadır. Örneğin, Yüksek Performanslı FPGA Tasarım Sanat: http://www.fpgacpu.org/log/aug02.html#art

Mutlu hack!

İlgili konular