河工大EDA技术综合设计-vivado软件-IP核封装

IP核及综合系统设计

一、实验目的
1. 了解IP模块的定义,分类及其应用,掌握模块化设计方法。
2. 掌握电路性能分析的实际操作方法和实际硬件芯片的内部资源情况。
二、实验设备
1、 计算机
2、 实验板
三、实验要求:
1、在PC机上完成仿真,对结果进行分析;
2、完成下载,在实验板上进行验证。
四、实验内容
1、设计原理
通过该次实验之前所设计的三选一数据选择器与多用分频器,将该两个实验封装成两个IP核,因为想要实现多用途使用,应而借用parameter来创建超参数。封装核后,当有工程需要该功能时,直接调用该IP核来简化代码,或者借用他人的设计来辅助完成自己的任务。
2、给出设计源文件    
module main(
input clk,
input clr,
input [1:0]x,
output clkout,
output [2:0]LED);
wire clk20hz,clk10hz,clk5hz;
IP_clk_div_0 u1(clk,clk20hz);
IP_clk_div_1 u2(clk,clk10hz); 
IP_clk_div_2 u3(clk,clk5hz);  
assign LED = {clk20hz,clk10hz,clk5hz};
wire PWM1,PWM2,PWM3;
IP_PWM_0 u4(clk20hz,clr,PWM1);
IP_PWM_1 u5(clk10hz,clr,PWM2);
IP_PWM_2 u6(clk5hz,clr,PWM3);
IP_selector_0 u7(x,PWM1,PWM2,PWM3,clkout);
Endmodule

module IP_selector( x,clk_20hz,clk_10hz,clk_5hz,y);
input[1:0] x;
input clk_20hz;
input clk_10hz;
input clk_5hz;
output reg y;
always@(*)
    case(x)
    2'b00:y<=clk_20hz;
    2'b01:y<=clk_10hz;
    2'b10:y<=clk_5hz;
    endcase
Endmodule

`timescale 1ns / 1ps
module IPI_PWM(
input wire clk,
input wire clr,
output reg pwm
    );
reg[4:0] count;
parameter count1 =19;
parameter count2 =10;
always @(posedge clk or posedge clr)
    if(clr == 1)
        count <= 0;
    else if(count == count1)
        count <= 0;
    else
        count <= count + 1;
            
    always @(*)
        if(count < count2)
            pwm <= 1;
        else
            pwm <= 0;    
Endmodule
`timescale 1ns / 1ps
module IPI_clk_div(
    input  clk,
    output reg clk_Hz
    );
integer clk_cnt;   
parameter[31:0] div=32'd10000000;   
always @(posedge clk)
       begin
         if(clk_cnt>=div)/ 
         begin 
         clk_cnt <= 1'b0; 
         clk_Hz <= ~clk_Hz;end 
         else
         clk_cnt <= clk_cnt + 1'b1;  
       end 
endmodule

3、仿真测试文件   
分频器仿真
`timescale 1ns / 1ps
module test();
  reg clk100M;
  reg rst;
  wire clkout;
  clk_div u0(clk100M,rst,clkout);
  initial
    begin
      clk100M=0;rst=1'b0; #100; rst=1'b1;end 
  always #10 clk100M=~clk100M;
endmodule

module test();
    reg clk100M;
    reg rst;
    wire clkout;
    reg [1:0] x;
    reg clk20hz;
    reg clk10hz;
    reg clk5hz;
    initial
    begin
      clk100M=0;rst=1'b0;x = 0;clk20hz=0;clk10hz=0;clk5hz = 0; 
      #100; rst=1'b1;end 
      IPI_data_selecter t1( x,clk20hz,clk10hz,clk5hz,clkout);
  always
  #10 clk100M=~clk100M;  always
  #20 clk20hz = ~clk20hz;
  always
  #40 clk10hz = ~clk10hz;
  always
  #80 clk5hz = ~clk5hz;
  always #100 x = x+1;
  endmodule

0ef06878076b426c90fdef07fa2ab7aa.jpg

5268aca870154111a266fd3f4533b26d.jpg

 实验板为a7570d9bc4ed45c1a876b8c9358082b4.jpeg

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白义

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值