fpga-logi / logi-projects

65 stars 51 forks source link

logi-edu demo doesn't work properly for board R1.1 #21

Open davidlawson opened 9 years ago

davidlawson commented 9 years ago

logi_edu_demo.vhd needs to contain the following modified PMOD signals for the R1.1 board for things to work properly. I'm not sure how to create a VHDL file with some sort of constant that switches things for different boards...

    PMOD1(3) <= vga_out(9);     --hsync_vga ; VGA_HS
    PMOD1(7) <= vga_out(10);    --vsync_vga ;   VGA_VS
    PMOD1(0) <= vga_out(2);     --red_vga(2);   VGA_R2
    PMOD1(4) <= vga_out(1);     --red_vga(1);   VGA_R1
    PMOD2(4) <= vga_out(0);     --red_vga(0); VGA_R0
    PMOD1(1) <= vga_out(5);     --green_vga(2); VGA_G2
    PMOD1(5) <= vga_out(4);     --green_vga(1); VGA_G1
    PMOD2(3) <= vga_out(3);     --green_vga(0); VGA_G0
    PMOD1(2) <= vga_out(8);     --blue_vga(2); VGA_B2
    PMOD1(6) <= vga_out(7);     --blue_vga(1); VGA_B1
    PMOD2(0) <= vga_out(6);     --blue_vga(0); VGA_B0

    PMOD2(5) <= sseg_edu_cathode_out(0); -- cathode 0 SEG_CRTL_A1
    PMOD2(1) <= sseg_edu_cathode_out(1); -- cathode 1 SEG_CTRL_A2
    PMOD3(0) <= sseg_edu_cathode_out(2); -- cathode 2 SEG_CTRL_A3
    PMOD3(1) <= sseg_edu_cathode_out(3); -- cathode 3 SEG_CTRL_A4
    PMOD2(2) <= '0'; -- cathode 4 SEG_CTRL_L?
    PMOD3(6) <= sseg_edu_anode_out(0); --A SSEG0_A
    PMOD3(5) <= sseg_edu_anode_out(1); --B SSEG1_B
    PMOD3(3) <= sseg_edu_anode_out(2); --C SSEG2_C
    PMOD2(6) <= sseg_edu_anode_out(3); --D SSEG3_D
    PMOD2(7) <= sseg_edu_anode_out(4); --E SSEG4_E
    PMOD3(7) <= sseg_edu_anode_out(5); --F SSEG5_F
    PMOD3(2) <= sseg_edu_anode_out(6); --G SSEG6_G
    PMOD3(4) <= sseg_edu_anode_out(7); --DP SSEG7_DP
jpiat commented 9 years ago

You can have a constant in your HDL that is then your to generate a different configuration based on the board.

First declare a logi variant type and then the board variant for a specific board :

type logi_variant_type is (V1_1, V1_5);
constant board_variant :  logi_variant_type := V1_1;

then when doing the board specific assignment :

gen__v1_1 : if board_variant = V1_1 generate 

-- board specific code

end generate ;

we could have the board type in a package file somewhere in logi-hard.