Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

arrow_deca: add Arrow DECA platform #158

Merged
merged 2 commits into from Jun 7, 2021

Conversation

StephanvanSchaik
Copy link
Contributor

Adds rudimentary support for the Arrow DECA board (see also the user manual) including the clocks, LEDs, switches, buttons and GPIO connectors as well as setitng the correct voltages for the I/O banks. The board features the Intel Altera MAX10 (10M50DAF484C6GES) FPGA.

There are more peripherals like the ADV7513 for HDMI TX, the TI TLV320AIC3254 24-bit audio codec, an SD card reader, etc. but this commit does not add support for those due to the varying voltages required for the different pins in a lot of cases. In addition, I would like to test any further additions thoroughly before committing them :).

To set the I/O bank voltages correctly, and to make sure Quartus doesn't complain (see also Tom Verbeure's blog post), we have to specify some additional set_global_assignment directives to the QSF file by overriding the file_templates() method.

I tested the board successfully with Blinky.

This also includes the fix discussed in pull request #156 to separate the "F484" part of the SKU out to the package variable. This change has been successfully tested with Blinky before opening this pull request.

@StephanvanSchaik
Copy link
Contributor Author

Also related: nmigen_boards/de10_lite.py seems to contain "F484" as part of the device variable rather than the package variable, which is set to "F23". The board definition of the DE10 Lite is what I actually used as an inspiration for the Arrow DECA. I originally tried the same device and package with Quartus, but Quartus does not seem to recognize the "F23" part for me at all. It might be an issue specific to the version of Quartus being used (the full version of Quartus Prime Lite 20.1.1 in my case).

I do have the DE10 Lite on the way to confirm whether the current board definition works or not.

@StephanvanSchaik StephanvanSchaik changed the title arrow_deca: add Arrow DECA platform (revision 2) arrow_deca: add Arrow DECA platform Jun 4, 2021
@StephanvanSchaik
Copy link
Contributor Author

I figured out the weird package name for the DE-10 Lite board (see PR #165). In addition, thanks to PR #166, I figured out that the clock resources should start numbering from zero if the name is different (e.g. clk10#0 and clk50#0). I fixed this for the Arrow DECA as well.

# Configure the voltages of the I/O banks by appending the global assignments to the
# template. However, we create our own copy of the file templates before modifying them to
# avoid modifying the original.
templates = {**super().file_templates}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Something like this would be more elegant:

return {
    **super().file_templates,
    "{{name}}.qsf": r"""
    ...
    """

Though this can be merged as-is.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants