Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

A Naive CORDIC implementation

License

NotificationsYou must be signed in to change notification settings

baptistepetit/cordic

Repository files navigation

main_cilive_demoCommitizen friendlyLicense

This repository aims at taking a classical computer science algorithm, theCOordinateRotationDIgitalComputer, and refine it step by step into an FPGA design in VHDL.

The underlying goal of this project is to experiment with a set of good practices in design that can be scalable to bigger projects. This is why each step of the project was built with CI integration in mind, even the hardware design part.

Proof of Concept

Stored in thepoc/ folder, this is the first step of this implementation journey. A simple static webpage with JavaScript code implementing the algorithm in a naive way, written to get to know better the algorithm.

Thelive demo webpage for this project is based on this code.

More details in itsREADME.

Fixed Point Refinement

Stored in thefixed_point/ folder, this is the second step of the work. An application in C++ implementing the CORDIC algorithm with fixed point arithmetic to get a fist estimate of bit precision needed and uncover potential hardware implementation problems.

More details in itsREADME.

Hardware Implementation

Stored in thehardware_design/ folder, this step of the process consists in implementing in hardware the algorithm using the model elaborated at the previous step as a golden reference. Here VHDL is used to describe the implementation, while a combination of ghdl and VUnit allows its automated testing.

More details in itsREADME.

Lesson Learnt (... so far)

  • Modelling basic fixed point data representation and arithmetic took much more time than expected: in the future a dedicated library such as SystemC seems worth using for hardware modelling, even for a small scale project such as this one.

  • Test driven development with a CI environment is possible in hardware design, and even easy to setup once the correct tools are installed.

Further Improvements

There are several ways to improve this project further, time allowing:

  • A first way would be to develop a wrapper to the hardware design to allow it connect to standard IPs, for instance through AXI4Stream, and use this occasion to experiment with system testing using UVVM and ghdl in the CI environment.
  • An other way would be to use more automated tools in the project, for instance to report the quality of the codebase or generate versions.

[8]ページ先頭

©2009-2025 Movatter.jp