forked from jburks/vera-module
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* refactored video modulator to use 1 less DSP and lessening the timing pressure for inputs of y_s, i_s and q_s flip flops * added module for a pair of 8x8 unsigned multipliers * rename of wires to make it more clear and explicit * small cleanup * small cleanup * changed version number to v0.1.2 * Gave negated signals a suffix to indicate they contain the negated value of their intended value * LUT usage reduction by refactoring and reordering * moved address and data related logic to separate addr_data module * LUT usage reduction by refactoring and reordering (fvdhoef#5) * Revert: Increase audio mixing resolution (fvdhoef#7) Co-authored-by: Natt Akuma <[email protected]> * FX: Separate address and data logic into module (fvdhoef#8) * LUT usage reduction by refactoring and reordering * moved address and data related logic to separate addr_data module * replaced another two multiplications with adders * replaced address logic structure with extendable one, added (dummy) addr1-mode * FX extendable structure for address logic (fvdhoef#9) * LUT usage reduction by refactoring and reordering * moved address and data related logic to separate addr_data module * replaced another two multiplications with adders * replaced address logic structure with extendable one, added (dummy) addr1-mode * added 8bpp line draw mode * replaced tabs by spaces * changed naming and added comments * [FX] Line draw mode (8bpp) (fvdhoef#10) * LUT usage reduction by refactoring and reordering * moved address and data related logic to separate addr_data module * replaced another two multiplications with adders * replaced address logic structure with extendable one, added (dummy) addr1-mode * added 8bpp line draw mode * replaced tabs by spaces * changed naming and added comments * added polygon filler helper (8bpp) * typo and more explicit check if ADDR0/1 is untouched * [FX] Polygon filler mode (8bpp) (fvdhoef#12) * LUT usage reduction by refactoring and reordering * moved address and data related logic to separate addr_data module * replaced another two multiplications with adders * replaced address logic structure with extendable one, added (dummy) addr1-mode * added 8bpp line draw mode * replaced tabs by spaces * changed naming and added comments * added polygon filler helper (8bpp) * typo and more explicit check if ADDR0/1 is untouched * added affine mode (8bpp) * added 32-bit cache and multiplier/accumulator, including transparent writes and 16bit hop mode * added 4-bit and 2-bit modes * Bump version (fvdhoef#17) * Bump version * Set version to 0.3.1 --------- Co-authored-by: Jeffrey <[email protected]> Co-authored-by: Joe Burks <[email protected]> Co-authored-by: Natt Akuma <[email protected]>
- Loading branch information
1 parent
b1ada29
commit 83a9fa6
Showing
11 changed files
with
1,752 additions
and
409 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
//`default_nettype none | ||
|
||
module mult_accum ( | ||
input wire clk, | ||
|
||
input wire [15:0] input_a_16, | ||
input wire [15:0] input_b_16, | ||
input wire mult_enabled, | ||
input wire reset_accum, | ||
input wire accumulate, | ||
input wire add_or_sub, | ||
|
||
output wire [31:0] output_32); | ||
|
||
pmi_dsp i_mult16x16 ( // port interfaces | ||
.A(input_a_16), | ||
.B(input_b_16), | ||
.C(input_b_16), // This is used to pass through the original value of the cache | ||
.D(input_a_16), // This is used to pass through the original value of the cache | ||
.O(output_32), | ||
.CLK(clk), | ||
.CE(1'b1), | ||
.IRSTTOP(1'b0), | ||
.IRSTBOT(1'b0), | ||
.ORSTTOP(reset_accum), | ||
.ORSTBOT(reset_accum), | ||
.AHOLD(1'b0), | ||
.BHOLD(1'b0), | ||
.CHOLD(1'b0), | ||
.DHOLD(1'b0), | ||
.OHOLDTOP(!accumulate), | ||
.OHOLDBOT(!accumulate), | ||
.OLOADTOP(!mult_enabled), // We are using the LOAD to switch between the multiplier output and (effectively) input C | ||
.OLOADBOT(!mult_enabled), // We are using the LOAD to switch between the multiplier output and (effectively) input D | ||
.ADDSUBTOP(add_or_sub), | ||
.ADDSUBBOT(add_or_sub), | ||
.CO(), | ||
.CI(1'b0), | ||
.ACCUMCI(1'b0), | ||
.ACCUMCO(), | ||
.SIGNEXTIN(1'b0), | ||
.SIGNEXTOUT() | ||
); | ||
defparam i_mult16x16.TOPOUTPUT_SELECT = 2'b00; // Adder output (non registered) | ||
defparam i_mult16x16.BOTOUTPUT_SELECT = 2'b00; // Adder output (non registered) | ||
defparam i_mult16x16.A_SIGNED = 1'b1; //Signed Inputs | ||
defparam i_mult16x16.B_SIGNED = 1'b1; | ||
|
||
defparam i_mult16x16.TOPADDSUB_CARRYSELECT = 2'b10; // 10: Cascade ACCUMOUT from lower Adder/Subtractor | ||
|
||
defparam i_mult16x16.TOPADDSUB_LOWERINPUT = 2'b10; // We send the output (the 16 upper bits) of the 16x16 multiplier to the lower side of the top accumilator | ||
defparam i_mult16x16.TOPADDSUB_UPPERINPUT = 1'b0; // We send the output of the top (output) flip-flop to the upper side of the top accumilator | ||
defparam i_mult16x16.BOTADDSUB_LOWERINPUT = 2'b10; // We send the output (the 16 lower bits) of the 16x16 multiplier to the lower side of the bottom accumilator | ||
defparam i_mult16x16.BOTADDSUB_UPPERINPUT = 1'b0; // We send the output of the bottom (output) flip-flop to the upper side of the top accumilator | ||
|
||
|
||
endmodule |
Oops, something went wrong.