HDLBits答案14-Sequential:More Circuits

1. Rule90

各单元的下一状态是此时当前单元相邻两位的异或。
在这个电路中,创建一个512单元系统(q(511:0)),并在每个时钟周期中前进一个时间步长。加载(load)表明系统的状态应该加载data[511:0]至q中,假设边界(q[0]和q[512])都为零。
在这里插入图片描述

module top_module(
    input clk,
    input load,
    input [511:0] data,
    output [511:0] q ); 
    int i;
    always@(posedge clk) begin
        if(load)
            q <= data;
        else begin
            q[0] <= q[1]^0;
            q[511] <= 0 ^ q[510];
            for(i=1;i<511;i++)
                q[i] <= q[i-1]^q[i+1];
        end
    end
endmodule

2.Rule 110

与题目一类似,状态转移条件发生变化,如下图所示:
在这里插入图片描述

module top_module(
    input clk,
    input load,
    input [511:0] data,
    output [511:0] q
); 
    int i;
    always @(posedge clk ) begin
        if(load)
            q <= data;
        else begin
            q[0] <=  q[0];
            q[511] <=  (q[511] ^ q[510] )|| ( q[510] );
            for(i = 1; i<511;i=i+1)
                q[i] <= (q[i] ^ q[i - 1] )|| (!q[i+1] & q[i-1]); 
        end
    end

endmodule

3. Conway’s Game of life 16*16

一个中心点周围有8个邻居,如果周围的邻居中1的数目为0-1个,那么中心点变为0;如果周围邻居中1的数目为2个,那么中心点状态不变;如果周围邻居中1的数目为3个,中心点变为1;如果周围邻居中1的数目大于3个,中心点变为0。

我们可以将周围的8个邻居的值都加起来来判断周围邻居中1的个数,值得注意的是,这里我们在for中使用了阻塞赋值,因需要当前拍(本周期)得到结果在当前拍(本周期)就去判断。

建议大家做该题的时候花一个16*16的方阵,分析边界条件,达到事半功倍的效果。

module top_module(
    input clk,
    input load,
    input [255:0] data,
    output [255:0] q ); 
    reg [15:0] q_2d [15:0];
    wire [2:0] nghbr_num [255:0];
    int i_d,i_u,j_l,j_r;
    always@(*)begin
        for(int i=0;i<16;i++)begin
            for(int j=0;j<16;j++)begin
                i_u=(i==0)?i-1+16:i-1;
                i_d=(i==15)?i+1-16:i+1;
                j_l=(j==0)?j-1+16:j-1;
                j_r=(j==15)?j+1-16:j+1;
              nghbr_num[i*16+j] = q_2d[i_u][j_l] + q_2d[i_u][j] + q_2d[i_u][j_r]
                                + q_2d[i][j_l]+ q_2d[i][j_r]
                                + q_2d[i_d][j_l] + q_2d[i_d][j] + q_2d[i_d][j_r];
            end
        end
    end
    always@(posedge clk)begin
        if(load)begin
            for(int i=0;i<16;i++)begin
                for(int j=0;j<16;j++)begin
                    q_2d[i][j] <= data[i*16+j];
                end
            end
        end
        else begin
            for(int i = 0 ; i < 16 ; i = i + 1) begin
                for(int j = 0 ; j < 16 ; j = j + 1) begin
                    if(nghbr_num[i*16+j] < 2)
                        q_2d[i][j]      <=  1'b0;
                    else if (nghbr_num[i*16+j] > 3)
                        q_2d[i][j]      <=  1'b0;
                    else if (nghbr_num[i*16+j] == 3)
                        q_2d[i][j]      <=  1'b1;
                    else
                        q_2d[i][j]      <=  q_2d[i][j];
                end
            end 
        end
    end
	always@(*) begin
        for(int i = 0 ; i < 16 ; i = i + 1) begin
            for(int j = 0 ; j < 16 ; j = j + 1) begin
                q[i*16+j] = q_2d[i][j];
            end
        end
    end
endmodule
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园的建设目标是通过数据整合、全面共享,实现校园内教学、科研、管理、服务流程的数字化、信息化、智能化和多媒体化,以提高资源利用率和管理效率,确保校园安全。 智慧校园的建设思路包括构建统一支撑平台、建立完善管理体系、大数据辅助决策和建设校园智慧环境。通过云架构的数据中心与智慧的学习、办公环境,实现日常教学活动、资源建设情况、学业水平情况的全面统计和分析,为决策提供辅助。此外,智慧校园还涵盖了多媒体教学、智慧录播、电子图书馆、VR教室等多种教学模式,以及校园网络、智慧班牌、校园广播等教务管理功能,旨在提升教学品质和管理水平。 智慧校园的详细方案设计进一步细化了教学、教务、安防和运维等多个方面的应用。例如,在智慧教学领域,通过多媒体教学、智慧录播、电子图书馆等技术,实现教学资源的共享和教学模式的创新。在智慧教务方面,校园网络、考场监控、智慧班牌等系统为校园管理提供了便捷和高效。智慧安防系统包括视频监控、一键报警、阳光厨房等,确保校园安全。智慧运维则通过综合管理平台、设备管理、能效管理和资产管理,实现校园设施的智能化管理。 智慧校园的优势和价值体现在个性化互动的智慧教学、协同高效的校园管理、无处不在的校园学习、全面感知的校园环境和轻松便捷的校园生活等方面。通过智慧校园的建设,可以促进教育资源的均衡化,提高教育质量和管理效率,同时保障校园安全和提升师生的学习体验。 总之,智慧校园解决方案通过整合现代信息技术,如云计算、大数据、物联网和人工智能,为教育行业带来了革命性的变革。它不仅提高了教育的质量和效率,还为师生创造了一个更加安全、便捷和富有智慧的学习与生活环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值