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