Spartan 6 FPGA 设计HC-SR04超声波测距实验VERILOG源码 Xilinx ISE14.6 工程文件 /每秒产生1个超声波测距模块所需的10us高脉冲激励,并用chipscope pro查看回响信号 module sp6( input ext_clk_25m, //外部输入25MHz时钟信号 input ext_rst_n, //外部输入复位信号,低电平有效 output ultrasound_trig, //超声波测距模块脉冲激励信号,10us的高脉冲 input ultrasound_echo, //超声波测距模块回响信号 output[0:0] led //D2指示灯 ); //------------------------------------- //PLL例化 wire clk_12m5; //PLL输出12.5MHz时钟 wire clk_25m; //PLL输出25MHz时钟 wire clk_50m; //PLL输出50MHz时钟 wire clk_100m; //PLL输出100MHz时钟 wire sys_rst_n; //PLL输出的locked信号,作为FPGA内部的复位信号,低电平复位,高电平正常工作 pll_controller uut_pll_controller (// Clock in ports .CLK_IN1(ext_clk_25m), // IN // Clock out ports .CLK_OUT1(clk_12m5), // OUT .CLK_OUT2(clk_25m), // OUT .CLK_OUT3(clk_50m), // OUT .CLK_OUT4(clk_100m), // OUT // Status and control signals .RESET(~ext_rst_n),// IN .LOCKED(sys_rst_n)); // OUT //------------------------------------- //25MHz时钟进行分频,产生一个100KHz频率的时钟使能信号 wire clk_100khz_en; //100KHz频率的一个时钟使能信号,即每10us产生一个时钟脉冲 clkdiv_generation uut_clkdiv_generation( .clk(clk_25m), //时钟信号 .rst_n(sys_rst_n), //复位信号,低电平有效 .clk_100khz_en(clk_100khz_en) //100KHz频率的一个时钟使能信号,即每10us产生一个时钟脉冲 ); //------------------------------------- //每秒产生一个10us的高脉冲作为超声波测距模块的激励 ultrasound_controller uut_ultrasound_controller( .clk(clk_25m), //时钟信号 .rst_n(sys_rst_n), //复位信号,低电平有效 .clk_100khz_en(clk_100khz_en), //100KHz频率的一个时钟使能信号,即每10us产生一个时钟脉冲 .ultrasound_trig(ultrasound_trig), //超声波测距模块脉冲激励信号,10us的高脉冲 .ultrasound_echo(ultrasound_echo) //超声波测距模块回响信号 ); //------------------------------------- //input信号必须经过IBUF后,才能作为chipscope中查看 wire ultrasound_echo_r; IBUF #( .IOSTANDARD("DEFAULT") // Specify the input I/O standard )IBUF_inst ( .O(ultrasound_echo_r), // Buffer output .I(ultrasound_echo) // Buffer input (connect directly to top-level port) ); assign led[0] = ultrasound_echo_