冒泡排序法设计Verilog代码VIVADO仿真

名称:冒泡排序法设计Verilog代码VIVADO仿真(文末获取)

软件:VIVADO

语言:Verilog

代码功能:

冒泡排序法设计

使用冒泡排序法给输入的8个数据排序

1.工程文件

2.程序文件

3.程序编译

4.Testbench

5.仿真图

上图中,输入数字顺序为9-3-8-5-7-2-4-6,排序后输出为2-3-4-5-6-7-8-9

上图中,输入数字顺序为8-5-6-7-6-3-2-1,排序后输出为1-2-3-5-6-6-7-8

部分代码展示:

module Bubble_Sort #(parameter N=8,word_size=4)
(
output [word_size-1 :0] A1,A2,A3,A4,A5,A6,A7,A8,
output Ready,
input [word_size-1 :0] A1_in,A2_in,A3_in,A4_in,A5_in,A6_in,A7_in,A8_in,
input En,Ld,clk,rst
);
Controller M0(
Ready,load,set_i,incr_i,set_j,
decr_j,swap,En,Ld,gt,i_lte_N,
j_gte_i,clk,rst
);
Datapath M1(
A1,A2,A3,A4,A5,A6,A7,A8,gt,i_lte_N,j_gte_i,
A1_in,A2_in,A3_in,A4_in,A5_in,A6_in,A7_in,A8_in,
load,set_i,incr_i,set_j,decr_j,swap,clk,rst
);
endmodule
源代码

点击下方的公众号卡片获取

好的,下面是一个简易两层电梯设计Vivado 仿真代码示例: ```verilog module elevator( input clk, // 时钟信号 input reset, // 复位信号 input floor1_button, // 1楼按钮信号 input floor2_button, // 2楼按钮信号 input up_button, // 上行按钮信号 input down_button, // 下行按钮信号 output reg motor_up, // 电梯上行信号 output reg motor_down, // 电梯下行信号 output reg open_door, // 开门信号 output reg[1:0] floor // 当前楼层信号 ); parameter idle = 2'b00; // 电梯空闲状态 parameter up = 2'b01; // 电梯上行状态 parameter down = 2'b10; // 电梯下行状态 reg[1:0] state; // 状态寄存器 reg[1:0] next_state; // 下一个状态寄存器 always @(posedge clk or posedge reset) begin if (reset) begin state <= idle; next_state <= idle; floor <= 2'b00; motor_up <= 1'b0; motor_down <= 1'b0; open_door <= 1'b0; end else begin state <= next_state; floor <= floor; motor_up <= motor_up; motor_down <= motor_down; open_door <= open_door; end end always @(*) begin case (state) idle: begin if (floor1_button || floor2_button) begin next_state = up; if (floor1_button) floor = 2'b01; else floor = 2'b10; motor_up = 1'b1; motor_down = 1'b0; open_door = 1'b0; end else if (up_button || down_button) begin next_state = idle; floor = floor; motor_up = 1'b0; motor_down = 1'b0; open_door = 1'b0; end else begin next_state = idle; floor = floor; motor_up = 1'b0; motor_down = 1'b0; open_door = 1'b0; end end up: begin if (floor == 2'b10) begin next_state = down; floor = 2'b10; motor_up = 1'b0; motor_down = 1'b1; open_door = 1'b0; end else begin next_state = up; floor = floor + 1; motor_up = 1'b1; motor_down = 1'b0; open_door = 1'b0; end end down: begin if (floor == 2'b01) begin next_state = up; floor = 2'b01; motor_up = 1'b1; motor_down = 1'b0; open_door = 1'b0; end else begin next_state = down; floor = floor - 1; motor_up = 1'b0; motor_down = 1'b1; open_door = 1'b0; end end endcase end endmodule ``` 这个代码实现了一个简单的两层电梯,通过输入按钮信号和调度算法控制电梯的上下行和开门行为,并输出当前楼层和电机控制信号。需要注意的是,这个代码只是一个仿真代码示例,实际在 FPGA 上运行需要进行综合和布局布线等后续步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值