puttimeth

Untitled

Sep 13th, 2020
1,929
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. `timescale 1ns / 1ps
  2. //////////////////////////////////////////////////////////////////////////////////
  3. // Company:
  4. // Engineer:
  5. //
  6. // Create Date: 09/01/2020 08:25:10 PM
  7. // Design Name:
  8. // Module Name: system
  9. // Project Name:
  10. // Target Devices:
  11. // Tool Versions:
  12. // Description:
  13. //
  14. // Dependencies:
  15. //
  16. // Revision:
  17. // Revision 0.01 - File Created
  18. // Additional Comments:
  19. //
  20. //////////////////////////////////////////////////////////////////////////////////
  21.  
  22.  
  23. module system(
  24.     output [6:0] seg,
  25.     output dp,
  26.     output [3:0] an,
  27.     input [7:0] sw,
  28.     input btnC,
  29.     input btnU,
  30.     input clk
  31.  
  32.     );
  33.    
  34.     wire [3:0] num0;
  35.     wire [3:0] num1;
  36.     wire [3:0] num2;
  37.     wire [3:0] num3;
  38.     wire cout0,bout0,cout1,bout1,cout2,bout2,cout3,bout3;
  39.     reg up0,up1,up2,up3;
  40.     reg down0,down1,down2,down3;
  41.     reg set90,set91,set92,set93;
  42.     reg set00,set01,set02,set03;
  43.    
  44. //    reg [3:0] num0_reg, num1_reg, num2_reg, num3_reg;
  45.    
  46. //    assign num0=num0_reg;
  47. //    assign num1=num1_reg;
  48. //    assign num2=num2_reg;
  49. //    assign num3=num3_reg;
  50.    
  51.     wire targetClk;
  52.     wire an0,an1,an2,an3;
  53.    
  54.     assign an={an3,an2,an1,an0};
  55.    
  56.     wire [18:0] tclk;
  57.    
  58.     assign tclk[0]=clk;
  59.    
  60.     genvar c;
  61.     generate for(c=0;c<18;c=c+1)
  62.     begin
  63.         clockDiv fdiv(tclk[c+1], tclk[c]);
  64.     end
  65.     endgenerate
  66.    
  67.     clockDiv fdivTarget(targetClk, tclk[18]);    
  68.    
  69.     wire [7:0] sw;
  70.     wire [7:0] sw_sp;
  71.     wire btnC, btnU, btnC_sp, btnW_sp;
  72.     generate for(c=0;c<8;c=c+1)
  73.     begin
  74.         singlePulser sp(sw_sp[c], sw[c], targetClk);
  75.     end
  76.     endgenerate
  77.     singlePulser sp2(btnC_sp, btnC, targetClk);
  78.     singlePulser sp3(btnU_sp, btnU, targetClk);
  79.    
  80.     onedigitBCD bcd0(num0,cout0,bout0,up0,down0,set90,set00,targetClk);
  81.     onedigitBCD bcd1(num1,cout1,bout1,up1,down1,set91,set01,targetClk);
  82.     onedigitBCD bcd2(num2,cout2,bout2,up2,down2,set92,set02,targetClk);
  83.     onedigitBCD bcd3(num3,cout3,bout3,up3,down3,set93,set03,targetClk);
  84.     quadSevenSeg q7seg(seg,dp,an0,an1,an2,an3,num0,num1,num2,num3,targetClk);
  85.    
  86.     always @(sw_sp) begin
  87.         case(sw_sp)
  88.             8'b00000000:begin up0=0;up1=0;up2=0;up3=0; end
  89.             8'b00000001:begin up0=0;up1=0;up2=0;up3=0; end
  90.             8'b00000010:begin up0=((num3!=9)||(num2!=9)||(num1!=9)||(num0!=9));
  91.                                 up1=(((num3!=9)||(num2!=9)||(num1!=9))&&(num0==9));
  92.                                 up2=(((num3!=9)||(num2!=9))&&(num1==9)&&(num0==9));
  93.                                 up3=((num3!=9)&&(num2==9)&&(num1==9)&&(num0==9)); end
  94.             8'b00000100:begin up0=0;up1=0;up2=0;up3=0; end
  95.             8'b00001000:begin up0=0;up1=((num3!=9)||(num2!=9)||(num1!=9));
  96.                                 up2=(((num3!=9)||(num2!=9))&&(num1==9));
  97.                                 up3=((num3!=9)&&(num2==9)&&(num1==9)); end
  98.             8'b00010000:begin up0=0;up1=0;up2=0;up3=0; end
  99.             8'b00100000:begin up0=0;up1=0;up2=((num3!=9)||(num2!=9));
  100.                                 up3=((num3!=9)&&(num2==9)); end
  101.             8'b01000000:begin up0=0;up1=0;up2=0;up3=0; end
  102.             8'b10000000:begin up0=0;up1=0;up2=0;up3=(num3!=9); end
  103.         endcase
  104.         case(sw_sp)
  105.             8'b00000000:begin down0=0;down1=0;down2=0;down3=0; end
  106.             8'b00000001:begin down0=(num3!=0)||(num2!=0)||(num1!=0)||(num0!=0);
  107.                                 down1=((num3!=0)||(num2!=0)||(num1!=0))&&(num0==0);
  108.                                 down2=((num3!=0)||(num2!=0))&&(num1==0)&&(num0==0);
  109.                                 down3=(num3!=0)&&(num2==0)&&(num1==0)&&(num0==0); end
  110.             8'b00000010:begin down0=0;down1=0;down2=0;down3=0; end
  111.             8'b00000100:begin down0=0;down1=(num3!=0)||(num2!=0)||(num1!=0);
  112.                                 down2=((num3!=0)||(num2!=0))&&(num1==0);
  113.                                 down3=(num3!=0)&&(num2==0)&&(num1==0); end
  114.             8'b00001000:begin down0=0;down1=0;down2=0;down3=0; end
  115.             8'b00010000:begin down0=0;down1=0;down2=(num3!=0)||(num2!=0);
  116.                                 down3=(num3!=0)&&(num2==0); end
  117.             8'b00100000:begin down0=0;down1=0;down2=0;down3=0; end
  118.             8'b01000000:begin down0=0;down1=0;down2=0;down3=(num3!=0); end
  119.             8'b10000000:begin down0=0;down1=0;down2=0;down3=0; end
  120.         endcase
  121.     end
  122.    
  123.     always @(btnC_sp) begin
  124.         if(btnC_sp == 1) begin
  125.             {set00,set01,set02,set03} = 4'b1111;
  126.         end
  127.         else begin
  128.             {set00,set01,set02,set03} = 4'b0000;
  129.         end
  130.     end
  131.    
  132.     always @(btnU_sp) begin
  133.         if(btnU_sp == 1) begin
  134.             {set90,set91,set92,set93} = 4'b1111;
  135.         end
  136.         else begin
  137.             {set90,set91,set92,set93} = 4'b0000;
  138.         end
  139.     end
  140.    
  141. endmodule
  142.  
Add Comment
Please, Sign In to add comment