zoukankan      html  css  js  c++  java
  • FPGA笔记之基于BASYS 2开发板的数码管点亮 Label:Research

    教程:

    https://wenku.baidu.com/view/3f9cf330aaea998fcc220e57.html

    https://blog.csdn.net/ding_ding_fly/article/details/53458451

    http://blog.chinaaet.com/dianzidebuguilu/p/5100050057

    https://wenku.baidu.com/view/bdf8c8a09ec3d5bbfc0a7466.html

    `timescale 1ns / 1ps
    //////////////////////////////////////////////////////////////////////////////////
    // Company: 
    // Engineer: 
    // 
    // Create Date:    16:56:08 12/07/2020 
    // Design Name: 
    // Module Name:    sfsd 
    // Project Name: 
    // Target Devices: 
    // Tool versions: 
    // Description: 
    //
    // Dependencies: 
    //
    // Revision: 
    // Revision 0.01 - File Created
    // Additional Comments: 
    //
    //////////////////////////////////////////////////////////////////////////////////
    module qiduanyimaqi(q_num, q_out);
    	input[3:0] q_num;
    	output[7:0] q_out;
    	reg[7:0] q_out;
    	
    	always @(q_num) begin
    		case(q_num)		
    		4'b0000:q_out = 8'b00000011;
    		4'b0001:q_out = 8'b10011111;
    		4'b0010:q_out = 8'b00100101;
    		4'b0011:q_out = 8'b00001101;
    		4'b0100:q_out = 8'b10011001;
    		4'b0101:q_out = 8'b01001001;
    		4'b0110:q_out = 8'b01000001;
    		4'b0111:q_out = 8'b00011011;
    		4'b1000:q_out = 8'b00000001;
    		4'b1001:q_out = 8'b00001001;
    		endcase
    	end
    endmodule
    
    module tsts1(A1,A2,A3,A4,B1,B2,B3,B4,led,F);
    input A1,A2,A3,A4,B1,B2,B3,B4;
    output [8:0] led;
    output F;
    
    reg [3:0] led_out;
    reg [3:0] A;
    reg [3:0] B;
    
    
    //assign F=(A1*8+A2*4+A3*2+A4*1+B1*8+B2*4+B3*2+B4*1);
    assign F=A1&B1;//
    
    always @(*) begin
    	A={A1,A2,A3,A4};
    	B={B1,B2,B3,B4};
    	led_out=A+B;
    end
    
    assign led[0]=1;
    assign led[1]=led_out[3];
    assign led[2]=led_out[2];
    assign led[3]=led_out[1];
    assign led[4]=led_out[0];
    assign led[5]=1;
    assign led[6]=1;
    assign led[7]=1;
    assign led[8]=1;
    
    
    endmodule
    
    
    module dtsm(mclk, d1_wx, d1_out,A1,A2,A3,A4,B1,B2,B3,B4,led,F);
    	input mclk;
    	output[3:0] d1_wx;
    	output[7:0] d1_out;
    	reg[3:0] d1_wx = 4'b1110;
    	wire[7:0] d1_out;
    	reg[3:0] d_tmp_num;
    	reg clk_reg;
    	
    	input A1,A2,A3,A4,B1,B2,B3,B4;
    	output [8:0] led;
    	output F;
    
    	reg [3:0] led_out;
    	reg [3:0] A;
    	reg [3:0] B;
    	
    	reg [3:0] d_tmp_num1;
    	reg [3:0] d_tmp_num2;
    	reg [3:0] d_tmp_num3;
    	reg [3:0] d_tmp_num4;
    	reg [31:0] count_reg0;
    
    	reg [3:0] double1,double2;
    
    //init
    	initial
    		begin
    			count_reg0=0;
    			d_tmp_num1=4'b0010;
    			d_tmp_num2=4'b0010;
    			d_tmp_num3=4'b0010;
    			d_tmp_num4=4'b0010;
    		end
    
    	assign led[0]=1;
    	assign led[1]=led_out[3];
    	assign led[2]=led_out[2];
    	assign led[3]=led_out[1];
    	assign led[4]=led_out[0];
    	assign led[5]=1;
    	assign led[6]=1;
    	assign led[7]=1;
    	assign led[8]=1;
    
    //clk_flash
    	always@(posedge mclk)
    		if(count_reg0==32'd00050000)
    			begin
    				clk_reg<=~clk_reg;
    				count_reg0<=32'd0;
    			end
    		else
    			begin
    				count_reg0<=count_reg0+32'd1;
    			end
    
    	always @(*) begin
    		A={A1,A2,A3,A4};
    		B={B1,B2,B3,B4};
    		led_out=A+B;
    		if(led_out[0]!=1)begin
    			double1=4'b0000;
    			double2=led_out;
    		end
    		else begin
    			if(led_out[3]==1)begin
    				double1=4'b0000;
    				double2=led_out;
    			end
    			else begin
    				double1=1;
    				double2=led_out-4'b0010;
    			end
    		end
    	end
    
    	always @(posedge clk_reg) begin		
    		case(d1_wx)
    			4'b1110:begin
    							d_tmp_num = B;//AN2
    							d1_wx = 4'b1101;
    						end
    			4'b1101:begin
    							d_tmp_num = d_tmp_num2;//AN1
    							d1_wx = 4'b1011;
    						end
    			4'b1011:begin
    							d_tmp_num = d_tmp_num1;//AN0
    							d1_wx = 4'b0111;
    						end
    			4'b0111:begin
    							d_tmp_num = A;//AN3
    							d1_wx = 4'b1110;
    						end
    			default: d1_wx = 4'b1110;
    			endcase		
    	end	
    	
    	qiduanyimaqi qiduanyimaqi(d_tmp_num, d1_out);
    	
    endmodule
    

      

  • 相关阅读:
    P5331 [SNOI2019]通信
    P3700 [CQOI2017]小Q的表格
    Linux
    P3268 [JLOI2016]圆的异或并
    P3317 [SDOI2014]重建
    P5492 [PKUWC2018]随机算法
    P3210 [HNOI2010]取石头游戏
    支配树
    P5401 [CTS2019]珍珠
    P4027 [NOI2007]货币兑换
  • 原文地址:https://www.cnblogs.com/radiumlrb/p/13945901.html
Copyright © 2011-2022 走看看