با سلام.
ببینید در HLS قرار نیست دقیقا همان کاری را که در verilog یا vhdl انجام میدادیم را تکرار کنیم در HLS خیلی کارها را برای ما ساده میکنه. مثلا همین سیگنال های کنترلی.
در HLS اصلا ما کاری به سیگنال های کنترلی نداریم و خود HLS این سیگنال ها را برای ما مدیریت می کنه و خوندن و نوشتن این سیگنال ها انجام میده. کاربر فقط لازمه توابع سطح بالا را استفاده کنه. برای همین مثال FIFO، برای داشتن ورودی FIFO متغیر تابعمون را بصورت زیر تعریف می کنیم
stream<dataWord>& inData
تو این مثال inData یک FIFO هست و data اون از جنس dataWord هست که تعریف این نوع به صورت زیر هست
struct dataWord {
ap_uint<8> data;
};
dataWord در این مثال یک سیگنال 8 بیتی هست
در بدنه اصلی برنامه برای خواندن از این FIFO می تونیم از توابع زیر استفاده کنیم
inData.full()
inData.empty()
indata.read()
برای کسب اطلاعان بیشتر به داکیومنت زیر مراجعه کنید
http://www.xilinx.co...l-synthesis.pdf
بخش HLS Stream Library مربوط به همین موضوع FIFO هست