Issues Converting VHDL to Verilog for DE10 Standard Board
Hi everyone,
I’m reaching out in desperation because I’m stuck on a project and really need help.
I’m working on a project inspired by a YouTube video and a GitHub project that use VHDL to implement functionality on the DE10 Standard Board. The goal is to play a 30-second audio, and the VHDL implementation works flawlessly—I’ve verified it step by step and reproduced the results shown in the video.
However, I decided to rewrite the code in Verilog for compatibility with other parts of my project. Despite spending a lot of time carefully converting the VHDL into three Verilog files (attached below) and double-checking everything, the functionality does not work as expected in Verilog.
The problem: The Verilog code fails to replicate the audio playback functionality achieved with the VHDL implementation.
I’ve spent countless hours debugging and troubleshooting but have reached a point where I feel completely lost and hopeless.
My Request:
- If anyone experienced in VHDL-to-Verilog conversion or DE10 Standard Board projects could take a look at my Verilog code, I would be forever grateful.
- Are there specific nuances or issues with using Verilog on the DE10 Standard Board compared to VHDL?
- Any debugging tips, insights, or suggestions would mean so much to me.
I’ve attached the Verilog files for your reference and am happy to provide additional information if needed.
Edited: I have attached 3 text files that include the VHDL code corresponding to the 3 Verilog files
Thank you so much for your time and help—I truly appreciate any support you can provide!
Hi,
the VHLD is almost correctly translated, except for one assignment which apparently misplacedVHDL
-- Copy the input clock signal
aud_bk <= aud_clock_12;-- Main process for generating control signals and sending audio data
process(aud_clock_12)Verilog
always @(negedge(aud_clock_12)) beginaud_bk <= aud_clock_12;
Asignment must be placed outside clock sensitive block, otherwise it won't generate a clock at all
assign aud_bk = aud_clock_12;There's also something wrong with the Verilog PLL instantiation which seems to be mixed with onchip memory.pll u0 (
.clk_clk(CLOCK_50),
.reset_reset_n(1'b1),
.clock_12_clk(clock_12pll),
.onchip_memory2_0_s1_address(ROM_ADDR),
.onchip_memory2_0_s1_clken(1'b1),
.onchip_memory2_0_s1_chipselect(1'b1),
.onchip_memory2_0_s1_debugaccess(1'b0),
.onchip_memory2_0_s1_write(1'b0),
.onchip_memory2_0_s1_readdata(ROM_OUT),
.onchip_memory2_0_s1_writedata(16'b0),
.onchip_memory2_0_s1_byteenable(2'b11),
.onchip_memory2_0_reset1_reset(1'b0)
);Regards
Frank