FPGA这东西就是个玄学。这个实验做了这么久,不想让它被遗忘,在此做一下记录,让它变得有价值起来。
Verilog实现快递柜 —— 实验六记录
实验描述
实验分析
- 打开vivado
- 新建工程
- 新建三个design文件,采用如下命名方式
- 添加约束文件
- 烧上FPGA板子吧
express.v
`timescale 1ns / 1ps
//
// Company:
// Engineer: Deadpool
//
// Create Date: 2019/12/04 15:23:53
// Design Name:
// Module Name: express
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module express(clk, X1, X2, X3, X4, password, boxes_len, segs0, segs1, len);
input wire clk;
input wire X1; //确认
input wire X2; //存包
input wire X3; //取包
input wire X4; //输入
input wire[15:0] password; //密码
output wire[15:0] boxes_len; //LED使能
output wire[7:0] segs0;
output wire[7:0] segs1;
output wire[7:0] len;
wire Y1; //快递箱是否满,初始为空
wire Y2; //密码是否正确,初始未知
wire Y3; //快递箱是否空,初始为空
//reg[15:0] store_slice[15:0];//密码寄存器组
parameter S0 = 3'b000; //初始状态
parameter S1 = 3'b001; //存放待确认状态
parameter S2 = 3'b010; //取出待输入密码状态
parameter S3 = 3'b011; //输入带平定状态
parameter S4 = 3'b100; //密码正确状态
parameter S5 = 3'b101; //密码错误状态
reg[2:0] current_state = S0; //系统初始现态为S0状态
reg[2:0] next_state = S0; //系统初始现态为S0状态
reg[31:0] wait_time = 0;
//reg[15:0] boxes = 16'hffff; //箱子状态 0为满, 1 为空
//箱子初始为全空
//reg[4:0] boxes_counter; //箱子个数计数器
//reg[3:0] four_bit;
//reg[7:0] eight_bit;
//8'd16 ~ 8'hff 和 0 ~ 15 随机数生成模块
//random U1(clk,four_bit,eight_bit);
//状态转移模块
always @(posedge clk) begin
current_state <= next_state;
end
//状态处理模块
stateprocessing U(clk, current_state, password, boxes_len, Y1, Y2, Y3, len, segs0, segs1);
//组合逻辑模块
always @(posedge clk) begin
//先判断快递箱是否装满
case({X1,X2,X3,X4,current_state})
{4'b1000,S0}:
begin
next_state = S0;
end
{4'b1000,S1}:
begin
next_state = S0;
end
{4'b1000,S2}:
begin
next_state = S2;
end
{4'b1000,S4}:
begin
next_state = S0;
end
{4'b1000,S5}:
begin
next_state = S0;
end
{4'b0100,S0}:
begin
if(Y1 == 1)
next_state = S0;
else begin
next_state = S1;
end
end
{4'b0100,S1}:
begin
next_state = S1;
end
{4'b0100,S2}:
begin
next_state = S2;
end
{4'b0100,S4}:
begin
next_state = S4;
end
{4'b0100,S5}:
begin
next_state = S5;
end
{4'b0010,S0}:
begin
if (Y3 == 1) begin
next_state = S0;
end
else begin
next_state = S2;
end
end
{4'b0010,S1}:
begin
next_state = S1;
end
{4'b0010,S2}:
begin
next_state = S2;
end
{4'b0010,S4}:
begin
next_state = S4;
end
{4'b0010,S5}:
begin
next_state = S5;
end
{4'b0001,S0}:
begin
next_state = S0;
end
{4'b0001,S1}:
begin
next_state = S1;
end
{4'b0001,S2}:
begin
next_state = S3;
end
{4'b0001,S4}:
begin
next_state = S4;
end
{4'b0001,S5}:
begin
next_state = S5;
end
{4'b0000,S3}:
begin
if(Y2 == 1) begin
if(wait_time == 32'd100000000) begin
next_state = S4;
end
else begin
next_state = S3;
wait_time = wait_time + 1;
end
end
else begin
next_state = S5;
end
end
default:
next_state = current_state;
endcase
end
endmodule
stateprocessing.v
`timescale 1ns / 1ps
//
// Company:
// Engineer: Deadpool
//
// Create Date: 2019/12/04 20:52:21
// Design Name:
// Module Name: stateprocessing
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module stateprocessing(clk, current_state, password, boxes_len, Y1, Y2, Y3, len, segs0, segs1);
input wire clk;
input wire[2:0] current_state; //系统现态
input wire[15:0] password; //状态S2时,输入的密码
output reg[15:0] boxes_len; //LED亮灯状态
output reg Y1; //快递箱是否满
output reg Y2; //密码是否正确
output reg Y3; //快递箱是否空
reg[15:0] store_slice[15:0]; //密码寄存器组 //别写反了,不然够的受
reg[15:0] boxes = 16'hffff; //箱子状态
reg[4:0] boxes_counter = 5'd16; //空闲箱子计数器
reg[7:0] password_bit1;
reg[7:0] password_bit2;
reg[7:0] password_bit3;
reg[7:0] password_bit4;
reg[3:0] box_open;
reg[31:0] blink_counter = 0; //灯光闪烁计数器
reg blink_len = 1; //闪烁开关控制器
parameter S0 = 3'b000; //初始状态
parameter S1 = 3'b001; //存放待确认状态
parameter S2 = 3'b010; //取出待输入密码状态
parameter S3 = 3'b011; //输入带平定状态
parameter S4 = 3'b100; //密码正确状态
parameter S5 = 3'b101; //密码错误状态
//定义数码管显示数字
parameter zero = 8'b11111100;
parameter one = 8'b01100000;
parameter two = 8'b11011010;
parameter three = 8'b11110010;
parameter four = 8'b01100110;
parameter five = 8'b10110110;
parameter six = 8'b10111110;
parameter seven = 8'b11100000;
parameter eight = 8'b11111110;
parameter nine = 8'b11100110;
parameter ten = 8'b11101110;
parameter eleven = 8'b00111110;
parameter twelve = 8'b00011010;
parameter thirteen = 8'b01111010;
parameter fourteen = 8'b10011110;
parameter fifteen = 8'b10001110;
parameter en0 = 8'b10000000;
parameter en1 = 8'b01000000;
parameter en2 = 8'b00100000;
parameter en3 = 8'b00010000;
parameter en4 = 8'b00001000;
parameter en5 = 8'b00000100;
parameter en6 = 8'b00000010;
parameter en7 = 8'b00000001;
parameter enoff = 8'b00000000;
reg clk2 = 1;
reg[31:0] timer_counter = 0;
wire[3:0] four_bit_random; //随机箱号
wire[7:0] four_bit_random1; //箱号第一位
wire[7:0] four_bit_random2; //箱号第二位
reg[7:0] four_bit_random_digital1; //存储箱号第一位数字
reg[7:0] four_bit_random_digital2; //存储箱号第二位数字
reg[3:0] pos; //随机箱号位置记录
reg save_flag = 0; //存箱标志位,如果为0则不能存,如果为1则能存
reg get_flag = 0; //取得标志位,如果为0则不能取,如果为1则能取
//随机密码显示
wire[7:0] random_password_bit1; //第一位
wire[7:0] random_password_bit2; //第二位
wire[7:0] random_password_bit3; //第三位
wire[7:0] random_password_bit4; //第四位
wire[3:0] sixteen_four_bit1;
wire[3:0] sixteen_four_bit2;
wire[3:0] sixteen_four_bit3;
wire[3:0] sixteen_four_bit4;
reg[7:0] random_password_bit1_digital; //存储密码第一位显示
reg[7:0] random_password_bit2_digital; //存储密码第二位显示
reg[7:0] random_password_bit3_digital; //存储密码第三位显示
reg[7:0] random_password_bit4_digital; //存储密码第四位显示
reg[3:0] sixteen_four_bit1_digital; //存储密码第一位十六进制
reg[3:0] sixteen_four_bit2_digital; //存储密码第二位十六进制
reg[3:0] sixteen_four_bit3_digital; //存储密码第三位十六进制
reg[3:0] sixteen_four_bit4_digital; //存储密码第四位十六进制
random U(clk, boxes, four_bit_random,four_bit_random1,four_bit_random2,sixteen_four_bit1,sixteen_four_bit2,sixteen_four_bit3,sixteen_four_bit4,random_password_bit1,random_password_bit2,random_password_bit3,random_password_bit4);
initial begin
Y1 = 1'b0; //快递箱是否满,初始为空
Y2 = 1'b1; //密码是否正确,初始未知
Y3 = 1'b1; //快递箱是否空,初始为空
segs0 = zero;
segs1 = zero;
end
//为Y1,Y3赋值
always @(posedge clk) begin
if(boxes_counter == 5'd0)
begin
Y1 <= 1;
Y3 <= 0;
end
else if(boxes_counter == 5'd16)
begin
Y1 <= 0;
Y3 <= 1;
end
else
begin
Y1 <= 0;
Y3 <= 0;
end
end
//分频
always@(posedge clk)
begin
if(timer_counter == 32'd49999)
begin
timer_counter <= 0;
clk2 =~clk2;
end
else begin
timer_counter <= timer_counter + 1;
end
end
//计数器
always @(posedge clk2) begin
if (counter == 3'b111) begin
counter <= 0;
end
else begin
counter <= counter + 1;
end
end
//数码管显示
always @(posedge clk) begin
case(counter)
3'b000:begin
len = len0;
segs0 = digital0;
end
3'b001:begin
len = len1;
segs0 = digital1;
end
3'b010:begin
len = len2;
segs0 = digital2;
end
3'b011:begin
len = len3;
segs0 = digital3;
end
3'b100:begin
len = len4;
segs1 = digital4;
end
3'b101:begin
len = len5;
segs1 = digital5;
end
3'b110:begin
len = len6;
segs1 = digital6;
end
3'b111:begin
len = len7;
segs1 = digital7;
end
endcase
end
//现态改变,才进行该always模块
always @(posedge clk) begin
if (current_state == S0) begin
save_flag = 1; //可以进行存包操作
get_flag = 1; //可以进行取包操作
len0 = en0;
digital0 = zero;
len1 = en1;
digital1 = five;
len2 = en2;
digital2 = one;
len3 = en3;
digital3 = six;
len4 = enoff;
len5 = enoff;
//判断箱子数boxes_counter
if (boxes_counter == 5'd0)begin
len6 = en6;
digital6 = zero;
len7 = en7;
digital7 = zero;
end
else if(boxes_counter == 5'd1)begin
len6 = en6;
digital6 = zero;
len7 = en7;
digital7 = one;
end
else if(boxes_counter == 5'd2)begin
len6 = en6;
digital6 = zero;
len7 = en7;
digital7 = two;
end
else if(boxes_counter == 5'd3)begin
len6 = en6;
digital6 = zero;
len7 = en7;
digital7 = three;
end
else if(boxes_counter == 5'd4)begin
len6 = en6;
digital6 = zero;
len7 = en7;
digital7 = four;
end
else if(boxes_counter == 5'd5)begin
len6 = en6;
digital6 = zero;
len7 = en7;
digital7 = five;
end
else if(boxes_counter == 5'd6)begin
len6 = en6;
digital6 = zero;
len7 = en7;
digital7 = six;
end
else if(boxes_counter == 5'd7)begin
len6 = en6;
digital6 = zero;
len7 = en7;
digital7 = seven;
end
else if(boxes_counter == 5'd8)begin
len6 = en6;
digital6 = zero;
len7 = en7;
digital7 = eight;
end
else if(boxes_counter == 5'd9)begin
len6 = en6;
digital6 = zero;
len7 = en7;
digital7 = nine;
end
else if(boxes_counter == 5'd10)begin
len6 = en6;
digital6 = one;
len7 = en7;
digital7 = zero;
end
else if(boxes_counter == 5'd11)begin
len6 = en6;
digital6 = one;
len7 = en7;
digital7 = one;
end
else if(boxes_counter == 5'd12)begin
len6 = en6;
digital6 = one;
len7 = en7;
digital7 = two;
end
else if(boxes_counter == 5'd13)begin
len6 = en6;
digital6 = one;
len7 = en7;
digital7 = three;
end
else if(boxes_counter == 5'd14)begin
len6 = en6;
digital6 = one;
len7 = en7;
digital7 = four;
end
else if(boxes_counter == 5'd15)begin
len6 = en6;
digital6 = one;
len7 = en7;
digital7 = five;
end
else if(boxes_counter == 5'd16)begin
len6 = en6;
digital6 = one;
len7 = en7;
digital7 = six;
end
else begin
len6 = en6;
digital6 = fifteen;
len7 = en7;
digital7 = fifteen;
end
//LED亮灯使能 -> 就是boxes的状态
boxes_len = boxes;
end
else if (current_state == S1) begin
if(save_flag == 1)
begin
pos = four_bit_random;
sixteen_four_bit1_digital = sixteen_four_bit1; //存储密码第一位十六进制
sixteen_four_bit2_digital = sixteen_four_bit2; //存储密码第二位十六进制
sixteen_four_bit3_digital = sixteen_four_bit3; //存储密码第三位十六进制
sixteen_four_bit4_digital = sixteen_four_bit4; //存储密码第四位十六进制
//four_bit_random_digital1 = four_bit_random1;
//four_bit_random_digital2 = four_bit_random2;
//random_password_bit1_digital = random_password_bit1; //存储密码第一位显示
//random_password_bit2_digital = random_password_bit2; //存储密码第二位显示
//random_password_bit3_digital = random_password_bit3; //存储密码第三位显示
//random_password_bit4_digital = random_password_bit4; //存储密码第四位显示
//随机箱子生成
boxes[pos] = 0; //存放,箱子状态置零
boxes_counter = boxes_counter - 1; //空闲箱子数 -1
/*len0 = en0;
digital0 = four_bit_random_digital1;
len1 = en1;
digital1 = four_bit_random_digital2;
len2 = enoff;
len3 = enoff;
//随机密码生成
len4 = en4;
digital4 = random_password_bit1_digital;
len5 = en5;
digital5 = random_password_bit2_digital;
len6 = en6;
digital6 = random_password_bit3_digital;
len7 = en7;
digital7 = random_password_bit4_digital;*/
store_slice[pos][15:12] = sixteen_four_bit1_digital;
store_slice[pos][11:8] = sixteen_four_bit2_digital;
store_slice[pos][7:4] = sixteen_four_bit3_digital;
store_slice[pos][3:0] = sixteen_four_bit4_digital;
//LED亮灯使能 -> 就是boxes[four_bit_random]的状态
//boxes_len = 16'h0000;
//boxes_len[pos] = 1;
//boxes_len <= boxes;
//boxes_len[boxes_counter] = 1;
save_flag = 0;
end
else begin
len0 = en0;
digital0 = four_bit_random_digital1;
len1 = en1;
digital1 = four_bit_random_digital2;
len2 = enoff;
len3 = enoff;
//随机密码生成
len4 = en4;
digital4 = random_password_bit1_digital;
len5 = en5;
digital5 = random_password_bit2_digital;
len6 = en6;
digital6 = random_password_bit3_digital;
len7 = en7;
digital7 = random_password_bit4_digital;
boxes_len = 16'h0000;
//boxes_len[pos] = 1;
//boxes_len <= boxes;
boxes_len[pos] = 1;
end
end
else if (current_state == S2) begin
len0 = enoff;
len1 = enoff;
len2 = enoff;
len3 = enoff;
len4 = enoff;
len5 = enoff;
len6 = enoff;
len7 = enoff;
boxes_len = 16'h0000;
end
else if (current_state == S3) begin
len0 = enoff;
len1 = enoff;
len2 = enoff;
len3 = enoff;
len4 = en4;
digital4 = password_bit1;
len5 = en5;
digital5 = password_bit2;
len6 = en6;
digital6 = password_bit3;
len7 = en7;
digital7 = password_bit4;
if(store_slice[0][15:12] == password[15:12] && store_slice[0][11:8] == password[11:8] && store_slice[0][7:4] == password[7:4] && store_slice[0][3:0] == password[3:0]) begin
Y2 = 1;
box_open = 0;
end
else if(store_slice[1][15:12] == password[15:12] && store_slice[1][11:8] == password[11:8] && store_slice[1][7:4] == password[7:4] && store_slice[1][3:0] == password[3:0]) begin
Y2 = 1;
box_open = 1;
end
else if(store_slice[2][15:12] == password[15:12] && store_slice[2][11:8] == password[11:8] && store_slice[2][7:4] == password[7:4] && store_slice[2][3:0] == password[3:0]) begin
Y2 = 1;
box_open = 2;
end
else if(store_slice[3][15:12] == password[15:12] && store_slice[3][11:8] == password[11:8] && store_slice[3][7:4] == password[7:4] && store_slice[3][3:0] == password[3:0]) begin
Y2 = 1;
box_open = 3;
end
else if(store_slice[4][15:12] == password[15:12] && store_slice[4][11:8] == password[11:8] && store_slice[4][7:4] == password[7:4] && store_slice[4][3:0] == password[3:0]) begin
Y2 = 1;
box_open = 4;
end
else if(store_slice[5][15:12] == password[15:12] && store_slice[5][11:8] == password[11:8] && store_slice[5][7:4] == password[7:4] && store_slice[5][3:0] == password[3:0]) begin
Y2 = 1;
box_open = 5;
end
else if(store_slice[6][15:12] == password[15:12] && store_slice[6][11:8] == password[11:8] && store_slice[6][7:4] == password[7:4] && store_slice[6][3:0] == password[3:0]) begin
Y2 = 1;
box_open = 6;
end
else if(store_slice[7][15:12] == password[15:12] && store_slice[7][11:8] == password[11:8] && store_slice[7][7:4] == password[7:4] && store_slice[7][3:0] == password[3:0]) begin
Y2 = 1;
box_open = 7;
end
else if(store_slice[8][15:12] == password[15:12] && store_slice[8][11:8] == password[11:8] && store_slice[8][7:4] == password[7:4] && store_slice[8][3:0] == password[3:0]) begin
Y2 = 1;
box_open = 8;
end
else if(store_slice[9][15:12] == password[15:12] && store_slice[9][11:8] == password[11:8] && store_slice[9][7:4] == password[7:4] && store_slice[9][3:0] == password[3:0]) begin
Y2 = 1;
box_open = 9;
end
else if(store_slice[10][15:12] == password[15:12] && store_slice[10][11:8] == password[11:8] && store_slice[10][7:4] == password[7:4] && store_slice[10][3:0] == password[3:0]) begin
Y2 = 1;
box_open = 10;
end
else if(store_slice[11][15:12] == password[15:12] && store_slice[11][11:8] == password[11:8] && store_slice[11][7:4] == password[7:4] && store_slice[11][3:0] == password[3:0]) begin
Y2 = 1;
box_open = 11;
end
else if(store_slice[12][15:12] == password[15:12] && store_slice[12][11:8] == password[11:8] && store_slice[12][7:4] == password[7:4] && store_slice[12][3:0] == password[3:0]) begin
Y2 = 1;
box_open = 12;
end
else if(store_slice[13][15:12] == password[15:12] && store_slice[13][11:8] == password[11:8] && store_slice[13][7:4] == password[7:4] && store_slice[13][3:0] == password[3:0]) begin
Y2 = 1;
box_open = 13;
end
else if(store_slice[14][15:12] == password[15:12] && store_slice[14][11:8] == password[11:8] && store_slice[14][7:4] == password[7:4] && store_slice[14][3:0] == password[3:0]) begin
Y2 = 1;
box_open = 14;
end
else if(store_slice[15][15:12] == password[15:12] && store_slice[15][11:8] == password[11:8] && store_slice[15][7:4] == password[7:4] && store_slice[15][3:0] == password[3:0]) begin
Y2 = 1;
box_open = 15;
end
else begin
Y2 = 0;
end
end
else if (current_state == S4) begin
if (get_flag == 1)
begin
boxes_counter = boxes_counter + 1;
store_slice[box_open] = 16'h0000;
boxes[box_open] = 1;
get_flag = 0;
boxes_len = 16'h0000; //清零
boxes_len[box_open] = 1; //亮
end
//待添加闪烁功能
else begin
if(blink_counter == 32'd49999999) begin
boxes_len[box_open] = ~(boxes_len[box_open]);
blink_counter = 0;
end
else begin
blink_counter = blink_counter + 1;
end
end
end
else begin
len0 = en0;
digital0 = eight;
len1 = en1;
digital1 = eight;
len2 = en2;
digital2 = eight;
len3 = en3;
digital3 = eight;
len4 = en4;
digital4 = eight;
len5 = en5;
digital5 = eight;
len6 = en6;
digital6 = eight;
len7 = en7;
digital7 = eight;
boxes_len = 16'hffff;
end
end
//灯光闪烁
/*always@(posedge clk) begin
if(blink_counter == 32'd100000) begin
if(boxes_len[box_open] == 1) begin
blink_len = 0;
end
else begin
blink_len = 1;
end
blink_counter <= 0;
end
else begin
blink_counter <= blink_counter + 1;
end
end*/
//password转化
always@(posedge clk) begin
case(password[15:12])
4'h0:begin password_bit1 = zero; end
4'h1:begin password_bit1 = one; end
4'h2:begin password_bit1 = two; end
4'h3:begin password_bit1 = three; end
4'h4:begin password_bit1 = four; end
4'h5:begin password_bit1 = five; end
4'h6:begin password_bit1 = six; end
4'h7:begin password_bit1 = seven; end
4'h8:begin password_bit1 = eight; end
4'h9:begin password_bit1 = nine; end
4'ha:begin password_bit1 = ten; end
4'hb:begin password_bit1 = eleven; end
4'hc:begin password_bit1 = twelve; end
4'hd:begin password_bit1 = thirteen; end
4'he:begin password_bit1 = fourteen; end
4'hf:begin password_bit1 = fifteen; end
default:
password_bit1 = zero;
endcase
case(password[11:8])
4'h0:begin password_bit2 = zero; end
4'h1:begin password_bit2 = one; end
4'h2:begin password_bit2 = two; end
4'h3:begin password_bit2 = three; end
4'h4:begin password_bit2 = four; end
4'h5:begin password_bit2 = five; end
4'h6:begin password_bit2 = six; end
4'h7:begin password_bit2 = seven; end
4'h8:begin password_bit2 = eight; end
4'h9:begin password_bit2 = nine; end
4'ha:begin password_bit2 = ten; end
4'hb:begin password_bit2 = eleven; end
4'hc:begin password_bit2 = twelve; end
4'hd:begin password_bit2 = thirteen; end
4'he:begin password_bit2 = fourteen; end
4'hf:begin password_bit2 = fifteen; end
default:
password_bit2 = zero;
endcase
case(password[7:4])
4'h0:begin password_bit3 = zero; end
4'h1:begin password_bit3 = one; end
4'h2:begin password_bit3 = two; end
4'h3:begin password_bit3 = three; end
4'h4:begin password_bit3 = four; end
4'h5:begin password_bit3 = five; end
4'h6:begin password_bit3 = six; end
4'h7:begin password_bit3 = seven; end
4'h8:begin password_bit3 = eight; end
4'h9:begin password_bit3 = nine; end
4'ha:begin password_bit3 = ten; end
4'hb:begin password_bit3 = eleven; end
4'hc:begin password_bit3 = twelve; end
4'hd:begin password_bit3 = thirteen; end
4'he:begin password_bit3 = fourteen; end
4'hf:begin password_bit3 = fifteen; end
default:
password_bit3 = zero;
endcase
case(password[3:0])
4'h0:begin password_bit4 = zero; end
4'h1:begin password_bit4 = one; end
4'h2:begin password_bit4 = two; end
4'h3:begin password_bit4 = three; end
4'h4:begin password_bit4 = four; end
4'h5:begin password_bit4 = five; end
4'h6:begin password_bit4 = six; end
4'h7:begin password_bit4 = seven; end
4'h8:begin password_bit4 = eight; end
4'h9:begin password_bit4 = nine; end
4'ha:begin password_bit4 = ten; end
4'hb:begin password_bit4 = eleven; end
4'hc:begin password_bit4 = twelve; end
4'hd:begin password_bit4 = thirteen; end
4'he:begin password_bit4 = fourteen; end
4'hf:begin password_bit4 = fifteen; end
default:
password_bit4 = zero;
endcase
end
//随机箱号显示
always@(posedge clk) begin
case (pos)
4'h0:
begin
four_bit_random_digital1 = zero;
four_bit_random_digital2 = one;
end
4'h1:
begin
four_bit_random_digital1 = zero;
four_bit_random_digital2 = two;
end
4'h2:
begin
four_bit_random_digital1 = zero;
four_bit_random_digital2 = three;
end
4'h3:
begin
four_bit_random_digital1 = zero;
four_bit_random_digital2 = four;
end
4'h4:
begin
four_bit_random_digital1 = zero;
four_bit_random_digital2 = five;
end
4'h5:
begin
four_bit_random_digital1 = zero;
four_bit_random_digital2 = six;
end
4'h6:
begin
four_bit_random_digital1 = zero;
four_bit_random_digital2 = seven;
end
4'h7:
begin
four_bit_random_digital1 = zero;
four_bit_random_digital2 = eight;
end
4'h8:
begin
four_bit_random_digital1 = zero;
four_bit_random_digital2 = nine;
end
4'h9:
begin
four_bit_random_digital1 = one;
four_bit_random_digital2 = zero;
end
4'ha:
begin
four_bit_random_digital1 = one;
four_bit_random_digital2 = one;
end
4'hb:
begin
four_bit_random_digital1 = one;
four_bit_random_digital2 = two;
end
4'hc:
begin
four_bit_random_digital1 = one;
four_bit_random_digital2 = three;
end
4'hd:
begin
four_bit_random_digital1 = one;
four_bit_random_digital2 = four;
end
4'he:
begin
four_bit_random_digital1 = one;
four_bit_random_digital2 = five;
end
4'hf:
begin
four_bit_random_digital1 = one;
four_bit_random_digital2 = six;
end
default:
begin
four_bit_random_digital1 <= zero;
four_bit_random_digital2 <= zero;
end
endcase
end
//随机密码显示
always @(posedge clk) begin
case (sixteen_four_bit1_digital)
4'h0:begin random_password_bit1_digital <= zero; end
4'h1:begin random_password_bit1_digital <= one; end
4'h2:begin random_password_bit1_digital <= two; end
4'h3:begin random_password_bit1_digital <= three; end
4'h4:begin random_password_bit1_digital <= four; end
4'h5:begin random_password_bit1_digital <= five; end
4'h6:begin random_password_bit1_digital <= six; end
4'h7:begin random_password_bit1_digital <= seven; end
4'h8:begin random_password_bit1_digital <= eight; end
4'h9:begin random_password_bit1_digital <= nine; end
4'ha:begin random_password_bit1_digital <= ten; end
4'hb:begin random_password_bit1_digital <= eleven; end
4'hc:begin random_password_bit1_digital <= twelve; end
4'hd:begin random_password_bit1_digital <= thirteen; end
4'he:begin random_password_bit1_digital <= fourteen; end
4'hf:begin random_password_bit1_digital <= fifteen; end
default:
random_password_bit1_digital <= zero;
endcase
end
always @(posedge clk) begin
case (sixteen_four_bit2_digital)
4'h0:begin random_password_bit2_digital <= zero; end
4'h1:begin random_password_bit2_digital <= one; end
4'h2:begin random_password_bit2_digital <= two; end
4'h3:begin random_password_bit2_digital <= three; end
4'h4:begin random_password_bit2_digital <= four; end
4'h5:begin random_password_bit2_digital <= five; end
4'h6:begin random_password_bit2_digital <= six; end
4'h7:begin random_password_bit2_digital <= seven; end
4'h8:begin random_password_bit2_digital <= eight; end
4'h9:begin random_password_bit2_digital <= nine; end
4'ha:begin random_password_bit2_digital <= ten; end
4'hb:begin random_password_bit2_digital <= eleven; end
4'hc:begin random_password_bit2_digital <= twelve; end
4'hd:begin random_password_bit2_digital <= thirteen; end
4'he:begin random_password_bit2_digital <= fourteen; end
4'hf:begin random_password_bit2_digital <= fifteen; end
default:
random_password_bit2_digital <= zero;
endcase
end
always @(posedge clk) begin
case (sixteen_four_bit3_digital)
4'h0:begin random_password_bit3_digital <= zero; end
4'h1:begin random_password_bit3_digital <= one; end
4'h2:begin random_password_bit3_digital <= two; end
4'h3:begin random_password_bit3_digital <= three; end
4'h4:begin random_password_bit3_digital <= four; end
4'h5:begin random_password_bit3_digital <= five; end
4'h6:begin random_password_bit3_digital <= six; end
4'h7:begin random_password_bit3_digital <= seven; end
4'h8:begin random_password_bit3_digital <= eight; end
4'h9:begin random_password_bit3_digital <= nine; end
4'ha:begin random_password_bit3_digital <= ten; end
4'hb:begin random_password_bit3_digital <= eleven; end
4'hc:begin random_password_bit3_digital <= twelve; end
4'hd:begin random_password_bit3_digital <= thirteen; end
4'he:begin random_password_bit3_digital <= fourteen; end
4'hf:begin random_password_bit3_digital <= fifteen; end
default:
random_password_bit3_digital <= zero;
endcase
end
always @(posedge clk) begin
case (sixteen_four_bit4_digital)
4'h0:begin random_password_bit4_digital <= zero; end
4'h1:begin random_password_bit4_digital <= one; end
4'h2:begin random_password_bit4_digital <= two; end
4'h3:begin random_password_bit4_digital <= three; end
4'h4:begin random_password_bit4_digital <= four; end
4'h5:begin random_password_bit4_digital <= five; end
4'h6:begin random_password_bit4_digital <= six; end
4'h7:begin random_password_bit4_digital <= seven; end
4'h8:begin random_password_bit4_digital <= eight; end
4'h9:begin random_password_bit4_digital <= nine; end
4'ha:begin random_password_bit4_digital <= ten; end
4'hb:begin random_password_bit4_digital <= eleven; end
4'hc:begin random_password_bit4_digital <= twelve; end
4'hd:begin random_password_bit4_digital <= thirteen; end
4'he:begin random_password_bit4_digital <= fourteen; end
4'hf:begin random_password_bit4_digital <= fifteen; end
default:
random_password_bit4_digital <= zero;
endcase
end
endmodule
random.v
`timescale 1ns / 1ps
//
// Company:
// Engineer: Deadpool
//
// Create Date: 2019/12/04 20:31:08
// Design Name:
// Module Name: random
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module random(clk, boxes, four_bit_random, four_bit_random1,four_bit_random2, sixteen_four_bit1,
sixteen_four_bit2,sixteen_four_bit3,sixteen_four_bit4,password_bit1,password_bit2,
password_bit3,password_bit4);
//定义数码管显示数字
parameter zero = 8'b11111100;
parameter one = 8'b01100000;
parameter two = 8'b11011010;
parameter three = 8'b11110010;
parameter four = 8'b01100110;
parameter five = 8'b10110110;
parameter six = 8'b10111110;
parameter seven = 8'b11100000;
parameter eight = 8'b11111110;
parameter nine = 8'b11100110;
parameter ten = 8'b11101110;
parameter eleven = 8'b00111110;
parameter twelve = 8'b00011010;
parameter thirteen = 8'b01111010;
parameter fourteen = 8'b10011110;
parameter fifteen = 8'b10001110;
input wire clk;
input wire[15:0] boxes; //箱子状态
output reg[3:0] four_bit_random; //生成4位随机数
output reg[7:0] four_bit_random1; //箱子随机数第一位
output reg[7:0] four_bit_random2; //箱子随机数第二位
output reg[7:0] password_bit1; //密码随机数第一位
output reg[7:0] password_bit2; //密码随机数第二位
output reg[7:0] password_bit3; //密码随机数第三位
output reg[7:0] password_bit4; //密码随机数第四位
output reg[3:0] sixteen_four_bit1;
output reg[3:0] sixteen_four_bit2;
output reg[3:0] sixteen_four_bit3;
output reg[3:0] sixteen_four_bit4;
reg[3:0] four_bit = 0;
reg clk2 = 1; //二分频
reg clk3 = 1; //四分频
reg clk4 = 1; //八分频
initial begin
sixteen_four_bit1 = 0;
sixteen_four_bit2 = 0;
sixteen_four_bit3 = 0;
sixteen_four_bit4 = 0;
end
always @(posedge clk) begin
clk2 =~ clk2;
end
always @(posedge clk2) begin
clk3 =~ clk3;
end
always @(posedge clk3) begin
clk4 =~ clk4;
end
always @(posedge clk) begin
if (four_bit == 4'hf)
four_bit <= 0;
else begin
four_bit <= four_bit + 1;
end
if(boxes[four_bit] == 0) begin
four_bit <= four_bit + 1;
end
else begin
four_bit_random <= four_bit;
end
if(boxes[four_bit] == 0) begin
four_bit <= four_bit + 1;
end
else begin
four_bit_random <= four_bit;
end
if(boxes[four_bit] == 0) begin
four_bit <= four_bit + 1;
end
else begin
four_bit_random <= four_bit;
end
if(boxes[four_bit] == 0) begin
four_bit <= four_bit + 1;
end
else begin
four_bit_random <= four_bit;
end
if(boxes[four_bit] == 0) begin
four_bit <= four_bit + 1;
end
else begin
four_bit_random <= four_bit;
end
if(boxes[four_bit] == 0) begin
four_bit <= four_bit + 1;
end
else begin
four_bit_random <= four_bit;
end
if(boxes[four_bit] == 0) begin
four_bit <= four_bit + 1;
end
else begin
four_bit_random <= four_bit;
end
if(boxes[four_bit] == 0) begin
four_bit <= four_bit + 1;
end
else begin
four_bit_random <= four_bit;
end
if(boxes[four_bit] == 0) begin
four_bit <= four_bit + 1;
end
else begin
four_bit_random <= four_bit;
end
if(boxes[four_bit] == 0) begin
four_bit <= four_bit + 1;
end
else begin
four_bit_random <= four_bit;
end
if(boxes[four_bit] == 0) begin
four_bit <= four_bit + 1;
end
else begin
four_bit_random <= four_bit;
end
if(boxes[four_bit] == 0) begin
four_bit <= four_bit + 1;
end
else begin
four_bit_random <= four_bit;
end
if(boxes[four_bit] == 0) begin
four_bit <= four_bit + 1;
end
else begin
four_bit_random <= four_bit;
end
if(boxes[four_bit] == 0) begin
four_bit <= four_bit + 1;
end
else begin
four_bit_random <= four_bit;
end
if(boxes[four_bit] == 0) begin
four_bit <= four_bit + 1;
end
else begin
four_bit_random <= four_bit;
end
if(boxes[four_bit] == 0) begin
four_bit <= four_bit + 1;
end
else begin
four_bit_random <= four_bit;
end
end
always @(posedge clk) begin
if (sixteen_four_bit4 == 4'hf) begin
sixteen_four_bit4 = 0;
end
else begin
sixteen_four_bit4 = sixteen_four_bit4 + 1;
end
end
always @(posedge clk2) begin
if (sixteen_four_bit3 == 4'hf) begin
sixteen_four_bit3 = 0;
end
else begin
sixteen_four_bit3 = sixteen_four_bit3 + 1;
end
end
always @(posedge clk3) begin
if (sixteen_four_bit2 == 4'hf) begin
sixteen_four_bit2 = 0;
end
else begin
sixteen_four_bit2 = sixteen_four_bit2 + 1;
end
end
always @(posedge clk4) begin
if (sixteen_four_bit1 == 4'hf) begin
sixteen_four_bit1 = 0;
end
else begin
sixteen_four_bit1 = sixteen_four_bit1 + 1;
end
end
always @(posedge clk4) begin
case (sixteen_four_bit1)
4'h0:begin password_bit1 <= zero; end
4'h1:begin password_bit1 <= one; end
4'h2:begin password_bit1 <= two; end
4'h3:begin password_bit1 <= three; end
4'h4:begin password_bit1 <= four; end
4'h5:begin password_bit1 <= five; end
4'h6:begin password_bit1 <= six; end
4'h7:begin password_bit1 <= seven; end
4'h8:begin password_bit1 <= eight; end
4'h9:begin password_bit1 <= nine; end
4'ha:begin password_bit1 <= ten; end
4'hb:begin password_bit1 <= eleven; end
4'hc:begin password_bit1 <= twelve; end
4'hd:begin password_bit1 <= thirteen; end
4'he:begin password_bit1 <= fourteen; end
4'hf:begin password_bit1 <= fifteen; end
default:
password_bit1 <= zero;
endcase
end
always @(posedge clk3) begin
case (sixteen_four_bit2)
4'h0:begin password_bit2 <= zero; end
4'h1:begin password_bit2 <= one; end
4'h2:begin password_bit2 <= two; end
4'h3:begin password_bit2 <= three; end
4'h4:begin password_bit2 <= four; end
4'h5:begin password_bit2 <= five; end
4'h6:begin password_bit2 <= six; end
4'h7:begin password_bit2 <= seven; end
4'h8:begin password_bit2 <= eight; end
4'h9:begin password_bit2 <= nine; end
4'ha:begin password_bit2 <= ten; end
4'hb:begin password_bit2 <= eleven; end
4'hc:begin password_bit2 <= twelve; end
4'hd:begin password_bit2 <= thirteen; end
4'he:begin password_bit2 <= fourteen; end
4'hf:begin password_bit2 <= fifteen; end
default:
password_bit2 <= zero;
endcase
end
always @(posedge clk2) begin
case (sixteen_four_bit3)
4'h0:begin password_bit3 <= zero; end
4'h1:begin password_bit3 <= one; end
4'h2:begin password_bit3 <= two; end
4'h3:begin password_bit3 <= three; end
4'h4:begin password_bit3 <= four; end
4'h5:begin password_bit3 <= five; end
4'h6:begin password_bit3 <= six; end
4'h7:begin password_bit3 <= seven; end
4'h8:begin password_bit3 <= eight; end
4'h9:begin password_bit3 <= nine; end
4'ha:begin password_bit3 <= ten; end
4'hb:begin password_bit3 <= eleven; end
4'hc:begin password_bit3 <= twelve; end
4'hd:begin password_bit3 <= thirteen; end
4'he:begin password_bit3 <= fourteen; end
4'hf:begin password_bit3 <= fifteen; end
default:
password_bit3 <= zero;
endcase
end
always @(posedge clk) begin
case (sixteen_four_bit4)
4'h0:begin password_bit4 <= zero; end
4'h1:begin password_bit4 <= one; end
4'h2:begin password_bit4 <= two; end
4'h3:begin password_bit4 <= three; end
4'h4:begin password_bit4 <= four; end
4'h5:begin password_bit4 <= five; end
4'h6:begin password_bit4 <= six; end
4'h7:begin password_bit4 <= seven; end
4'h8:begin password_bit4 <= eight; end
4'h9:begin password_bit4 <= nine; end
4'ha:begin password_bit4 <= ten; end
4'hb:begin password_bit4 <= eleven; end
4'hc:begin password_bit4 <= twelve; end
4'hd:begin password_bit4 <= thirteen; end
4'he:begin password_bit4 <= fourteen; end
4'hf:begin password_bit4 <= fifteen; end
default:
password_bit4 <= zero;
endcase
end
always @(posedge clk) begin
case (four_bit_random)
4'h0:
begin
four_bit_random1 <= zero;
four_bit_random2 <= one;
end
4'h1:
begin
four_bit_random1 <= zero;
four_bit_random2 <= two;
end
4'h2:
begin
four_bit_random1 <= zero;
four_bit_random2 <= three;
end
4'h3:
begin
four_bit_random1 <= zero;
four_bit_random2 <= four;
end
4'h4:
begin
four_bit_random1 <= zero;
four_bit_random2 <= five;
end
4'h5:
begin
four_bit_random1 <= zero;
four_bit_random2 <= six;
end
4'h6:
begin
four_bit_random1 <= zero;
four_bit_random2 <= seven;
end
4'h7:
begin
four_bit_random1 <= zero;
four_bit_random2 <= eight;
end
4'h8:
begin
four_bit_random1 <= zero;
four_bit_random2 <= nine;
end
4'h9:
begin
four_bit_random1 <= one;
four_bit_random2 <= zero;
end
4'ha:
begin
four_bit_random1 <= one;
four_bit_random2 <= one;
end
4'hb:
begin
four_bit_random1 <= one;
four_bit_random2 <= two;
end
4'hc:
begin
four_bit_random1 <= one;
four_bit_random2 <= three;
end
4'hd:
begin
four_bit_random1 <= one;
four_bit_random2 <= four;
end
4'he:
begin
four_bit_random1 <= one;
four_bit_random2 <= five;
end
4'hf:
begin
four_bit_random1 <= one;
four_bit_random2 <= six;
end
default:
begin
four_bit_random1 <= zero;
four_bit_random2 <= zero;
end
endcase
end
endmodule
约束文件
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets clk]
set_property PACKAGE_PIN K3 [get_ports {boxes_len[0]}]
set_property PACKAGE_PIN M1 [get_ports {boxes_len[1]}]
set_property PACKAGE_PIN L1 [get_ports {boxes_len[2]}]
set_property PACKAGE_PIN K6 [get_ports {boxes_len[3]}]
set_property PACKAGE_PIN J5 [get_ports {boxes_len[4]}]
set_property PACKAGE_PIN H5 [get_ports {boxes_len[5]}]
set_property PACKAGE_PIN H6 [get_ports {boxes_len[6]}]
set_property PACKAGE_PIN K1 [get_ports {boxes_len[7]}]
set_property PACKAGE_PIN K2 [get_ports {boxes_len[8]}]
set_property PACKAGE_PIN J2 [get_ports {boxes_len[9]}]
set_property PACKAGE_PIN J3 [get_ports {boxes_len[10]}]
set_property PACKAGE_PIN H4 [get_ports {boxes_len[11]}]
set_property PACKAGE_PIN J4 [get_ports {boxes_len[12]}]
set_property PACKAGE_PIN G3 [get_ports {boxes_len[13]}]
set_property PACKAGE_PIN G4 [get_ports {boxes_len[14]}]
set_property PACKAGE_PIN F6 [get_ports {boxes_len[15]}]
set_property PACKAGE_PIN P17 [get_ports clk]
set_property PACKAGE_PIN G6 [get_ports {len[0]}]
set_property PACKAGE_PIN E1 [get_ports {len[1]}]
set_property PACKAGE_PIN F1 [get_ports {len[2]}]
set_property PACKAGE_PIN G1 [get_ports {len[3]}]
set_property PACKAGE_PIN H1 [get_ports {len[4]}]
set_property PACKAGE_PIN C1 [get_ports {len[5]}]
set_property PACKAGE_PIN C2 [get_ports {len[6]}]
set_property PACKAGE_PIN G2 [get_ports {len[7]}]
set_property PACKAGE_PIN T5 [get_ports {password[0]}]
set_property PACKAGE_PIN T3 [get_ports {password[1]}]
set_property PACKAGE_PIN R3 [get_ports {password[2]}]
set_property PACKAGE_PIN V4 [get_ports {password[3]}]
set_property PACKAGE_PIN V5 [get_ports {password[4]}]
set_property PACKAGE_PIN V2 [get_ports {password[5]}]
set_property PACKAGE_PIN U2 [get_ports {password[6]}]
set_property PACKAGE_PIN U3 [get_ports {password[7]}]
set_property PACKAGE_PIN R1 [get_ports {password[8]}]
set_property PACKAGE_PIN N4 [get_ports {password[9]}]
set_property PACKAGE_PIN M4 [get_ports {password[10]}]
set_property PACKAGE_PIN R2 [get_ports {password[11]}]
set_property PACKAGE_PIN P2 [get_ports {password[12]}]
set_property PACKAGE_PIN P3 [get_ports {password[13]}]
set_property PACKAGE_PIN P4 [get_ports {password[14]}]
set_property PACKAGE_PIN P5 [get_ports {password[15]}]
set_property PACKAGE_PIN D5 [get_ports {segs0[0]}]
set_property PACKAGE_PIN B2 [get_ports {segs0[1]}]
set_property PACKAGE_PIN B3 [get_ports {segs0[2]}]
set_property PACKAGE_PIN A1 [get_ports {segs0[3]}]
set_property PACKAGE_PIN B1 [get_ports {segs0[4]}]
set_property PACKAGE_PIN A3 [get_ports {segs0[5]}]
set_property PACKAGE_PIN A4 [get_ports {segs0[6]}]
set_property PACKAGE_PIN B4 [get_ports {segs0[7]}]
set_property PACKAGE_PIN H2 [get_ports {segs1[0]}]
set_property PACKAGE_PIN D2 [get_ports {segs1[1]}]
set_property PACKAGE_PIN E2 [get_ports {segs1[2]}]
set_property PACKAGE_PIN F3 [get_ports {segs1[3]}]
set_property PACKAGE_PIN F4 [get_ports {segs1[4]}]
set_property PACKAGE_PIN D3 [get_ports {segs1[5]}]
set_property PACKAGE_PIN E3 [get_ports {segs1[6]}]
set_property PACKAGE_PIN D4 [get_ports {segs1[7]}]
set_property PACKAGE_PIN U4 [get_ports X2]
set_property PACKAGE_PIN R17 [get_ports X3]
set_property PACKAGE_PIN R11 [get_ports X1]
set_property PACKAGE_PIN V1 [get_ports X4]
set_property IOSTANDARD LVCMOS33 [get_ports {boxes_len[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {boxes_len[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {boxes_len[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {boxes_len[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {boxes_len[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {boxes_len[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {boxes_len[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {boxes_len[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {boxes_len[8]}]
set_property IOSTANDARD LVCMOS33 [get_ports {boxes_len[9]}]
set_property IOSTANDARD LVCMOS33 [get_ports {boxes_len[10]}]
set_property IOSTANDARD LVCMOS33 [get_ports {boxes_len[11]}]
set_property IOSTANDARD LVCMOS33 [get_ports {boxes_len[12]}]
set_property IOSTANDARD LVCMOS33 [get_ports {boxes_len[13]}]
set_property IOSTANDARD LVCMOS33 [get_ports {boxes_len[14]}]
set_property IOSTANDARD LVCMOS33 [get_ports {boxes_len[15]}]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports {len[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {len[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {len[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {len[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {len[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {len[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {len[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {len[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {password[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {password[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {password[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {password[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {password[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {password[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {password[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {password[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {password[8]}]
set_property IOSTANDARD LVCMOS33 [get_ports {password[9]}]
set_property IOSTANDARD LVCMOS33 [get_ports {password[10]}]
set_property IOSTANDARD LVCMOS33 [get_ports {password[11]}]
set_property IOSTANDARD LVCMOS33 [get_ports {password[12]}]
set_property IOSTANDARD LVCMOS33 [get_ports {password[13]}]
set_property IOSTANDARD LVCMOS33 [get_ports {password[14]}]
set_property IOSTANDARD LVCMOS33 [get_ports {password[15]}]
set_property IOSTANDARD LVCMOS33 [get_ports {segs0[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {segs0[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {segs0[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {segs0[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {segs0[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {segs0[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {segs0[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {segs0[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {segs1[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {segs1[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {segs1[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {segs1[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {segs1[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {segs1[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {segs1[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {segs1[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports X2]
set_property IOSTANDARD LVCMOS33 [get_ports X3]
set_property IOSTANDARD LVCMOS33 [get_ports X1]
set_property IOSTANDARD LVCMOS33 [get_ports X4]