差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
4bits_adder_seg [2021/10/09 16:40] gongyu [3. Verilog代码] |
4bits_adder_seg [2021/10/09 16:54] (当前版本) gongyu [2. 硬件连接] |
||
---|---|---|---|
行 12: | 行 12: | ||
### 2. 硬件连接 | ### 2. 硬件连接 | ||
- | {{drawio>4bitsadder_seg.png}} | + | {{drawio>4bitsadder_seg.png}} <WRAP centeralign> 小脚丫FPGA用于实现4位加法器并结果输出的连接示意图 </WRAP> |
### 3. Verilog代码 | ### 3. Verilog代码 | ||
行 80: | 行 81: | ||
<code python> | <code python> | ||
+ | module binary2bcd(binary_data,tens,ones); | ||
+ | input [4:0] binary_data; | ||
+ | output reg [3:0] tens; | ||
+ | output reg [3:0] ones; | ||
+ | |||
+ | always @* | ||
+ | case(binary_data) | ||
+ | 5'd0: | ||
+ | begin | ||
+ | tens = 4'd0; | ||
+ | ones = 4'd0; | ||
+ | end | ||
+ | 5'd1: | ||
+ | begin | ||
+ | tens = 4'd0; | ||
+ | ones = 4'd1; | ||
+ | end | ||
+ | 5'd2: | ||
+ | begin | ||
+ | tens = 4'd0; | ||
+ | ones = 4'd2; | ||
+ | end | ||
+ | 5'd3: | ||
+ | begin | ||
+ | tens = 4'd0; | ||
+ | ones = 4'd3; | ||
+ | end | ||
+ | 5'd4: | ||
+ | begin | ||
+ | tens = 4'd0; | ||
+ | ones = 4'd4; | ||
+ | end | ||
+ | 5'd5: | ||
+ | begin | ||
+ | tens = 4'd0; | ||
+ | ones = 4'd5; | ||
+ | end | ||
+ | 5'd6: | ||
+ | begin | ||
+ | tens = 4'd0; | ||
+ | ones = 4'd6; | ||
+ | end | ||
+ | 5'd7: | ||
+ | begin | ||
+ | tens = 4'd0; | ||
+ | ones = 4'd7; | ||
+ | end | ||
+ | 5'd8: | ||
+ | begin | ||
+ | tens = 4'd0; | ||
+ | ones = 4'd8; | ||
+ | end | ||
+ | 5'd9: | ||
+ | begin | ||
+ | tens = 4'd0; | ||
+ | ones = 4'd9; | ||
+ | end | ||
+ | 5'd10: | ||
+ | begin | ||
+ | tens = 4'd1; | ||
+ | ones = 4'd0; | ||
+ | end | ||
+ | 5'd11: | ||
+ | begin | ||
+ | tens = 4'd1; | ||
+ | ones = 4'd1; | ||
+ | end | ||
+ | 5'd12: | ||
+ | begin | ||
+ | tens = 4'd1; | ||
+ | ones = 4'd2; | ||
+ | end | ||
+ | 5'd13: | ||
+ | begin | ||
+ | tens = 4'd1; | ||
+ | ones = 4'd3; | ||
+ | end | ||
+ | 5'd14: | ||
+ | begin | ||
+ | tens = 4'd1; | ||
+ | ones = 4'd4; | ||
+ | end | ||
+ | 5'd15: | ||
+ | begin | ||
+ | tens = 4'd1; | ||
+ | ones = 4'd5; | ||
+ | end | ||
+ | 5'd16: | ||
+ | begin | ||
+ | tens = 4'd1; | ||
+ | ones = 4'd6; | ||
+ | end | ||
+ | 5'd17: | ||
+ | begin | ||
+ | tens = 4'd1; | ||
+ | ones = 4'd7; | ||
+ | end | ||
+ | 5'd18: | ||
+ | begin | ||
+ | tens = 4'd1; | ||
+ | ones = 4'd8; | ||
+ | end | ||
+ | 5'd19: | ||
+ | begin | ||
+ | tens = 4'd1; | ||
+ | ones = 4'd9; | ||
+ | end | ||
+ | 5'd20: | ||
+ | begin | ||
+ | tens = 4'd2; | ||
+ | ones = 4'd0; | ||
+ | end | ||
+ | 5'd21: | ||
+ | begin | ||
+ | tens = 4'd2; | ||
+ | ones = 4'd1; | ||
+ | end | ||
+ | 5'd22: | ||
+ | begin | ||
+ | tens = 4'd2; | ||
+ | ones = 4'd2; | ||
+ | end | ||
+ | 5'd23: | ||
+ | begin | ||
+ | tens = 4'd2; | ||
+ | ones = 4'd3; | ||
+ | end | ||
+ | 5'd24: | ||
+ | begin | ||
+ | tens = 4'd2; | ||
+ | ones = 4'd4; | ||
+ | end | ||
+ | 5'd25: | ||
+ | begin | ||
+ | tens = 4'd2; | ||
+ | ones = 4'd5; | ||
+ | end | ||
+ | 5'd26: | ||
+ | begin | ||
+ | tens = 4'd2; | ||
+ | ones = 4'd6; | ||
+ | end | ||
+ | 5'd27: | ||
+ | begin | ||
+ | tens = 4'd2; | ||
+ | ones = 4'd7; | ||
+ | end | ||
+ | 5'd28: | ||
+ | begin | ||
+ | tens = 4'd2; | ||
+ | ones = 4'd8; | ||
+ | end | ||
+ | 5'd29: | ||
+ | begin | ||
+ | tens = 4'd2; | ||
+ | ones = 4'd9; | ||
+ | end | ||
+ | 5'd30: | ||
+ | begin | ||
+ | tens = 4'd3; | ||
+ | ones = 4'd0; | ||
+ | end | ||
+ | 5'd31: | ||
+ | begin | ||
+ | tens = 4'd3; | ||
+ | ones = 4'd1; | ||
+ | end | ||
+ | endcase | ||
+ | |||
+ | /* | ||
+ | integer i; | ||
+ | |||
+ | always @(binary_data) | ||
+ | begin | ||
+ | tens = 4'd0; | ||
+ | ones = 4'd0; | ||
+ | | ||
+ | for (i=7; i >= 0; i=i-1) | ||
+ | begin | ||
+ | if (tens>=5) | ||
+ | tens = tens +3; | ||
+ | if (ones >= 5) | ||
+ | ones = ones +3; | ||
+ | tens = tens << 1; | ||
+ | tens[0] = ones[3]; | ||
+ | ones = ones << 1; | ||
+ | ones[0] = binary_data[i]; | ||
+ | end | ||
+ | end | ||
+ | */ | ||
+ | |||
+ | endmodule | ||
</code> | </code> | ||
+ | |||
<code python> | <code python> | ||
+ | // ******************************************************************** | ||
+ | // >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<< | ||
+ | // ******************************************************************** | ||
+ | // File name : segment.v | ||
+ | // Module name : segment | ||
+ | // Author : STEP | ||
+ | // Description : segment initial | ||
+ | // Web : www.stepfpga.com | ||
+ | // | ||
+ | // -------------------------------------------------------------------- | ||
+ | // Code Revision History : | ||
+ | // -------------------------------------------------------------------- | ||
+ | // Version: |Mod. Date: |Changes Made: | ||
+ | // V1.0 |2021/10/08 |Initial ver | ||
+ | // -------------------------------------------------------------------- | ||
+ | // Module Function:数码管的译码模块初始化 | ||
- | </code> | + | module LED (seg_data_1,seg_data_2,seg_led_1,seg_led_2); |
+ | input [3:0] seg_data_1; //数码管需要显示0~9十个数字,所以最少需要4位输入做译码 | ||
+ | input [3:0] seg_data_2; //小脚丫上第二个数码管 | ||
+ | output [8:0] seg_led_1; //在小脚丫上控制一个数码管需要9个信号 MSB~LSB=DIG、DP、G、F、E、D、C、B、A | ||
+ | output [8:0] seg_led_2; //在小脚丫上第二个数码管的控制信号 MSB~LSB=DIG、DP、G、F、E、D、C、B、A | ||
+ | |||
+ | reg [8:0] seg [9:0]; //定义了一个reg型的数组变量,相当于一个10*9的存储器,存储器一共有10个数,每个数有9位宽 | ||
+ | | ||
+ | initial //在过程块中只能给reg型变量赋值,Verilog中有两种过程块always和initial | ||
+ | //initial和always不同,其中语句只执行一次 | ||
+ | begin | ||
+ | seg[0] = 9'h3f; //对存储器中第一个数赋值9'b00_0011_1111,相当于共阴极接地,DP点变低不亮,7段显示数字 0 | ||
+ | seg[1] = 9'h06; //7段显示数字 1 | ||
+ | seg[2] = 9'h5b; //7段显示数字 2 | ||
+ | seg[3] = 9'h4f; //7段显示数字 3 | ||
+ | seg[4] = 9'h66; //7段显示数字 4 | ||
+ | seg[5] = 9'h6d; //7段显示数字 5 | ||
+ | seg[6] = 9'h7d; //7段显示数字 6 | ||
+ | seg[7] = 9'h07; //7段显示数字 7 | ||
+ | seg[8] = 9'h7f; //7段显示数字 8 | ||
+ | seg[9] = 9'h6f; //7段显示数字 9 | ||
+ | end | ||
+ | | ||
+ | assign seg_led_1 = seg[seg_data_1]; //连续赋值,这样输入不同四位数,就能输出对于译码的9位输出 | ||
+ | assign seg_led_2 = seg[seg_data_2]; | ||
+ | |||
+ | endmodule | ||
+ | </code> | ||
### 4. 管脚分配 | ### 4. 管脚分配 | ||
+ | {{ :4bitsadder_pinout.jpg |}} <WRAP centeralign> 用数码管显示结果的4位加法器的管脚分配图 </WRAP> | ||
+ | |||
### 5. 功能验证 | ### 5. 功能验证 |