انجمن گفتگوی فراد اندیش

به اشتراک بگذارید:
آگاه‌سازی‌ها
پاک‌کردن همه

ایجاد ارتباط UART با کد VHDL

2 ارسال‌
1 کاربران
0 Reactions
1,284 نمایش‌
(@farzadaavajgmail-com)
ارسال‌: 2
New Member
شروع کننده موضوع
 

با سلام کد VHDL یک ارتباط UART رو با استفاده از ماشین حالت نوشتم و شبیه سازی رفتاری رو هم انجام دادم. ارتباط به گونه ای است که گیرنده RX یک ورودی هشت بیتی به همراه بیت های stop و start را دریافت می کند. گیرنده پس از دریافت کامل دیتای هشت بیتی و هم چنین دریافت آخرین بیت یعنی بیت stop اجازه ارسال دیتا را با یک کردن یک خروجی valid به فرستنده می دهد سپس فرستنده شروع به ارسال دیتا به صورت سریال می کند گیرنده نیز همزمان دیتا سریال جدید بعدی را دریافت می کند اما تا زمانی که بیت Stop دریافت نشده آن را در ورودی فرستنده قرار نمی دهد. طبیعتا چون گیرنده 10 بیت را دریافت می کند و فرستنده 8 بیت را می فرستد (هردو با نرخ بیت یکسان) از لحاظ زمانی دیتای اشتباه رد و بدل نمی شود.
شکل موج را ضمیه کردم اما از صحت عملکرد این ارتباط مطمین نیستم.

 
ارسال‌شده : 8 اردیبهشت، 1400 1:34 ب.ظ
(@farzadaavajgmail-com)
ارسال‌: 2
New Member
شروع کننده موضوع
 
ارسال‌شده توسط: @farzadaavajgmail-com

با سلام کد VHDL یک ارتباط UART رو با استفاده از ماشین حالت نوشتم و شبیه سازی رفتاری رو هم انجام دادم. ارتباط به گونه ای است که گیرنده RX یک ورودی هشت بیتی به همراه بیت های stop و start را دریافت می کند. گیرنده پس از دریافت کامل دیتای هشت بیتی و هم چنین دریافت آخرین بیت یعنی بیت stop اجازه ارسال دیتا را با یک کردن یک خروجی valid به فرستنده می دهد سپس فرستنده شروع به ارسال دیتا به صورت سریال می کند گیرنده نیز همزمان دیتا سریال جدید بعدی را دریافت می کند اما تا زمانی که بیت Stop دریافت نشده آن را در ورودی فرستنده قرار نمی دهد. طبیعتا چون گیرنده 10 بیت را دریافت می کند و فرستنده 8 بیت را می فرستد (هردو با نرخ بیت یکسان) از لحاظ زمانی دیتای اشتباه رد و بدل نمی شود.
شکل موج را ضمیه کردم اما از صحت عملکرد این ارتباط مطمین نیستم.

و سوال که داشتم فراموش کردم. مقدار پیش فرض خروجی فرستنده یعنی TX زمانی که دیتا آماده ارسال نیست باید یک باشد و یا صفر؟

من در کد خودم یک گذاشتم

 
ارسال‌شده : 8 اردیبهشت، 1400 1:42 ب.ظ
به اشتراک بگذارید:
>