归零---09-8-26


1、下载Oracle Instant Client
    服务器系统Windows Server 2003,安装了Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 ,带有SQL*Plus。客户端系统Windows XP SP3,需要使用SQL*Plus对Oracle数据库进行操作。搜索了一下,发现Oracle Instant Client(http://www.oracle.com/technology ... htdocs/winsoft.html)正是所需。

    如果只使用SQL*Plus,则下载以下两个包即可:
    a)、Instant Client Package - Basic:
    All files required to run OCI, OCCI, and JDBC-OCI applications
    instantclient-basic-win32-11.1.0.6.0.zip (43,316,697 bytes)

    b)、Instant Client Package - SQL*Plus:
    Additional libraries and executable for running SQL*Plus with Instant Client
    instantclient-sqlplus-win32-11.1.0.6.0.zip (788,050 bytes)

2、安装配置
    a、将instantclient-basic-win32-11.1.0.6.0.zip 和 instantclient-sqlplus-win32-11.1.0.6.0.zip解压到同一目录下(如:F:\Oracle\InstantClient)。

    b、环境变量设置:
    将F:\Oracle\InstantClient增加到系统环境变量PATH中。

    再添加环境变量TNS_ADMIN (admin目录是自己新建的):
    TNS_ADMIN=F:\Oracle\InstantClient\admin

    可选环境变量:
    NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

    c、在TNS_ADMIN所指目录F:\Oracle\InstantClient\admin下增加一个配置文件tnsnames.ora。这个文件可以直接从服务器的Oracle安装目录(H:\Oracle\product\11.1.0\db_1\network\admin\tnsnames.ora)下找到,直接复制过来。

tnsnames.ora:

# tnsnames.ora Network Configuration File:
# Generated by Oracle configuration tools.

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.168.1.101)
    )
  )


3、使用SQL*Plus:
    打开cmd,输入如下内容:
c:\>sqlplus sys/admin@orcl as sysdba

实验一: 1、三个LED同步闪烁 (1)代码 `timescale 1ns / 1ps module three_leds( input wire sys_clk, // 系统时钟输入(100MHz) input wire sys_rst_n, // 系统复位信号,低电平有效 output reg [2:0] leds // 三位LED输出,控制三个LED ); // 参数定义 parameter CNT_MAX = 26'd49_999_999; // 1秒计数器(100MHz时钟) // 26位计数器寄存器 reg [25:0] cnt; // 计数器逻辑 always @(posedge sys_clk or negedge sys_rst_n) begin if (!sys_rst_n) cnt <= 26'd0; // 复位时计数器清零 else if (cnt == CNT_MAX) cnt <= 26'd0; // 达到最大值时归零 else cnt <= cnt + 26'd1; // 计数器递增 end // LED控制逻辑 //always @(posedge sys_clk or negedge sys_rst_n) begin // if (!sys_rst_n) // leds <= 3'b001; // 复位时只有第一个LED亮 // else if (cnt == CNT_MAX) // leds <= {leds[1:0], leds[2]}; // 循环右移LED状态 // else // leds <= leds; // 保持当前状态 //end // 修改后的LED控制逻辑(三个LED同时亮) always @(posedge sys_clk or negedge sys_rst_n) begin if (!sys_rst_n) leds <= 3'b000; // 复位时全灭 else if (cnt == CNT_MAX) //leds <= 3'b111; // 定时时间到,全亮 leds <= ~leds; // 状态翻转(亮?灭) else leds <= leds; // 保持当前状态 end endmodule (2)约束文件 # 系统时钟约束 - 保持不变 set_property -dict {PACKAGE_PIN P17 IOSTANDARD LVCMOS33} [get_ports sys_clk] # 系统复位约束 - 保持不变 set_property -dict {PACKAGE_PIN P15 IOSTANDARD LVCMOS33} [get_ports sys_rst_n] # LED约束 - 根据实际管脚表修正 # 使用D2组的LED0-2(因为D1组是8个LED,D2组也是8个LED) # 选择D2_0(D2组第一个LED) -> K2 # 选择D2_1(D2组第二个LED) -> J2 # 选择D2_2(D2组第三个LED) -> J3 set_property -dict {PACKAGE_PIN K2 IOSTANDARD LVCMOS33} [get_ports {leds[0]}] set_property -dict {PACKAGE_PIN J2 IOSTANDARD LVCMOS33} [get_ports {leds[1]}] set_property -dict {PACKAGE_PIN J3 IOSTANDARD LVCMOS33} [get_ports {leds[2]}] # 可选:设置时钟约束 - 保持不变 create_clock -period 10.000 -name sys_clk -waveform {0.000 5.000} [get_ports sys_clk] 2、0-15计数器 代码: `timescale 1ns / 1ps module seg7_counter_dec_0to15 ( input wire clk, // 100MHz时钟 input wire rst_n, // 低电平复位 output wire [7:0] seg, // 段选信号(共阴极) output wire [7:0] an // 位选信号(低电平有效) ); // 参数定义 parameter DIVIDER_1HZ = 28'd100_000_000; // 1Hz计数器 parameter DIVIDER_1KHZ = 16'd50_000; // 1kHz扫描频率 // 寄存器定义 reg [27:0] div_counter; // 1Hz分频计数器 reg [15:0] scan_counter; // 扫描分频计数器 reg [3:0] digit0; // 个位数(0-9) reg [3:0] digit1; // 十位数(0-1) reg [1:0] scan_state; // 扫描状态 reg [3:0] current_digit; // 当前显示数字 reg [7:0] seg_reg; // 段选寄存器 reg [7:0] an_reg; // 位选寄存器 // 1Hz分频器 always @(posedge clk or negedge rst_n) begin if (!rst_n) div_counter <= 0; else div_counter <= (div_counter == DIVIDER_1HZ - 1) ? 0 : div_counter + 1; end // 1kHz扫描分频器 always @(posedge clk or negedge rst_n) begin if (!rst_n) scan_counter <= 0; else scan_counter <= (scan_counter == DIVIDER_1KHZ - 1) ? 0 : scan_counter + 1; end // 数字计数器(00-15) always @(posedge clk or negedge rst_n) begin if (!rst_n) begin digit0 <= 0; digit1 <= 0; end else if (div_counter == DIVIDER_1HZ - 1) begin if (digit0 >= 9) begin digit0 <= 0; digit1 <= digit1 + 1; // 十位加1 end else begin digit0 <= digit0 + 1; end // 达到15时归零 if (digit1 == 1 && digit0 == 5) begin digit0 <= 0; digit1 <= 0; end end end // 数码管扫描状态控制 always @(posedge clk or negedge rst_n) begin if (!rst_n) scan_state <= 0; else if (scan_counter == DIVIDER_1KHZ - 1) scan_state <= scan_state + 1; end // 当前显示数字选择 always @(*) begin case (scan_state) 2'b00: current_digit = digit1; // 显示十位 2'b01: current_digit = digit0; // 显示个位 default: current_digit = digit1; endcase end // 7段译码器(0-9) always @(*) begin case (current_digit) 4'd0: seg_reg = 8'b00111111; // 0 4'd1: seg_reg = 8'b00000110; // 1 4'd2: seg_reg = 8'b01011011; // 2 4'd3: seg_reg = 8'b01001111; // 3 4'd4: seg_reg = 8'b01100110; // 4 4'd5: seg_reg = 8'b01101101; // 5 4'd6: seg_reg = 8'b01111101; // 6 4'd7: seg_reg = 8'b00000111; // 7 4'd8: seg_reg = 8'b01111111; // 8 4'd9: seg_reg = 8'b01101111; // 9 default: seg_reg = 8'b00111111; // 默认显示0 endcase end // 位选信号生成 always @(*) begin case (scan_state) 2'b00: an_reg = 8'b00000001; // 选中第一个数码管(十位) 2'b01: an_reg = 8'b00000010; // 选中第二个数码管(个位) default: an_reg = 8'b00000001; endcase end // 输出分配 assign seg = seg_reg; assign an = an_reg; endmodule 约束文件: # 时钟约束 (100MHz系统时钟) create_clock -period 10.000 -name clk [get_ports clk] # 复位按钮 set_property -dict { PACKAGE_PIN P15 IOSTANDARD LVCMOS33 } [get_ports { rst_n }] # 系统时钟 (板载100MHz时钟) set_property -dict { PACKAGE_PIN P17 IOSTANDARD LVCMOS33 } [get_ports { clk }] # 数码管段选信号 (共阴极,高电平有效) set_property -dict { PACKAGE_PIN B4 IOSTANDARD LVCMOS33 } [get_ports { seg[0] }] set_property -dict { PACKAGE_PIN A4 IOSTANDARD LVCMOS33 } [get_ports { seg[1] }] set_property -dict { PACKAGE_PIN A3 IOSTANDARD LVCMOS33 } [get_ports { seg[2] }] set_property -dict { PACKAGE_PIN B1 IOSTANDARD LVCMOS33 } [get_ports { seg[3] }] set_property -dict { PACKAGE_PIN A1 IOSTANDARD LVCMOS33 } [get_ports { seg[4] }] set_property -dict { PACKAGE_PIN B3 IOSTANDARD LVCMOS33 } [get_ports { seg[5] }] set_property -dict { PACKAGE_PIN B2 IOSTANDARD LVCMOS33 } [get_ports { seg[6] }] set_property -dict { PACKAGE_PIN D5 IOSTANDARD LVCMOS33 } [get_ports { seg[7] }] # 数码管位选信号 (共阴极,高电平有效) set_property -dict { PACKAGE_PIN G2 IOSTANDARD LVCMOS33 } [get_ports { an[0] }] set_property -dict { PACKAGE_PIN C2 IOSTANDARD LVCMOS33 } [get_ports { an[1] }] set_property -dict { PACKAGE_PIN C1 IOSTANDARD LVCMOS33 } [get_ports { an[2] }] set_property -dict { PACKAGE_PIN H1 IOSTANDARD LVCMOS33 } [get_ports { an[3] }] set_property -dict { PACKAGE_PIN G1 IOSTANDARD LVCMOS33 } [get_ports { an[4] }] set_property -dict { PACKAGE_PIN F1 IOSTANDARD LVCMOS33 } [get_ports { an[5] }] set_property -dict { PACKAGE_PIN E1 IOSTANDARD LVCMOS33 } [get_ports { an[6] }] set_property -dict { PACKAGE_PIN G6 IOSTANDARD LVCMOS33 } [get_ports { an[7] }] 3、4分频 代码:`timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 2025/05/08 09:07:13 // Design Name: // Module Name: clock_divider // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// module clock_divider( input wire clk, // 100MHz主时钟输入 input wire rst_n, // 异步复位信号,低电平有效 output reg clk_out // 4分频后的时钟输出 ); reg [2:0] counter; // 2位计数器,用于4分频 always @(posedge clk or negedge rst_n) begin if (!rst_n) begin counter <= 3'b000; clk_out <= 1'b0; end else begin if (counter == 3'b100) begin counter <= 3'b000; clk_out <= ~clk_out; end else begin counter <= counter + 1; end end end endmodule 仿真文件: `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 2025/05/08 09:06:48 // Design Name: // Module Name: tb_clock_divider // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// module tb_clock_divider; // 信号声明 reg clk; reg rst_n; wire clk_out; // 实例化待测模块 clock_divider uut( .clk(clk), .rst_n(rst_n), .clk_out(clk_out) ); // 生成100MHz时钟信号 initial begin clk = 0; forever #5 clk = ~clk; // 周期为10ns,对应100MHz end // 复位信号 initial begin rst_n = 0; #20; rst_n = 1; #200; $finish; end // 监控信号 initial begin $monitor("Time: %0t, clk: %b, rst_n: %b, clk_out: %b", $time, clk, rst_n, clk_out); end endmodule 4、5分频 代码: `timescale 1ns / 1ps module even_divider ( input wire clk, input wire rst_n, output reg clk_out ); reg [1:0] counter; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin counter <= 2'b00; clk_out <= 1'b0; end else if (counter == 2'b01) begin counter <= 2'b00; clk_out <= ~clk_out; end else begin counter <= counter + 1; end end endmodule 约束文件: # 约束主时钟输入 set_property PACKAGE_PIN P17 [get_ports clk] set_property IOSTANDARD LVCMOS33 [get_ports clk] create_clock -period 10.000 -name clk -waveform {0.000 5.000} [get_ports clk] # 约束复位信号 set_property PACKAGE_PIN P15 [get_ports rst_n] set_property IOSTANDARD LVCMOS33 [get_ports rst_n] # 约束偶数分频输出 set_property PACKAGE_PIN T1 [get_ports clk_out_even] set_property IOSTANDARD LVCMOS33 [get_ports clk_out_even] # 约束奇数分频输出 set_property PACKAGE_PIN M6 [get_ports clk_out_odd] set_property IOSTANDARD LVCMOS33 [get_ports clk_out_odd] 请你认真分析以上代码,已知所有的芯片型号均为 Artix-7 xc7a35tcsg324-1,请你根据你的分析及Artix-7 xc7a35tcsg324-1芯片,设计智能农业监控系统设计 帮助某智慧农业大棚需实现以下功能: o 实时采集土壤温湿度(I2C传感器) o 4位数码管显示关键参数 o 异常数据通过LoRa无线传输 o 历史数据存储至片外Flash 设计要求: a) 绘制系统架构图(标注模块间通信接口类型) b) 设计状态机实现三种工作模式(正常/校准/传输) c) 说明如何利用CLB资源优化传感器数据处理 解答时,重点在于对于问题的分析和解决思路。 应提供:1、针对题目要求的内容分析;2、设计思路;3、部分关键代码(仿真波形);4、针对题目中要求的对应解决方案;
05-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值