12-分频器 -偶分频

1.分频器

计数器是对于时钟信号进行计数,板载晶振的时钟频率是固定的,有时候需要进行分频和倍频才能满足需要
开发板上只有一种晶振,只有一种频率的时钟,想要通过对与固定时钟进行分频或者是倍频的方式得到各个模块所需的时钟频率,得到比固定时钟快的时钟通过倍频,得到比固定时钟慢的时钟通过分频

  • 分频和倍频都有两种方式:第一种是通过锁相环(PLL),另外一种是编写verilog代码
  • 分频器是数字系统设计中最常见的基本电路之一,所谓分频就是把输入信号的频率变成成倍数地低于输入频率的输出信号
  • 分频器原理是将输入的信号做为计数脉冲,计数器的输出端口的脉冲是按一定频率输出的,就可以看作是输出端口的分频
  • 分频器分为偶数分频器和奇数分频器,分频器和计数器非常类似,有时可以认为是同一种东西

2.FPGA实现

  • 实现对于固定时钟6分频的电路

2.1 模块框图和波形图


2.2 RTL

module divider_six(
  input wire sys_clk,
  input wire sys_rst_n,
  
  output reg clk_out
);


  reg [1:0] cnt;
  
  // cnt变量
  always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
      cnt <= 2'd0;
    else if(cnt == 2'd2)
      cnt <= 2'd0;
    else
      cnt <= cnt + 2'd1;


  always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
      clk_out <= 1'b0;
    else if(cnt == 2'd2)
      clk_out <= ~clk_out;
    else 
      clk_out <= clk_out;

endmodule
  • 创建项目,编译代码

2.3 Testbench

`timescale 1ns/1ns
module tb_divider_six();
  reg sys_clk;
  reg sys_rst_n;  

  wire [1:0] clk_out;

  // 初始化时钟和复位信号
  initial begin
    sys_clk = 1'b0;
    sys_rst_n = 1'b0;
    #20;
    sys_rst_n = 1'b1;
  end
    
  // 模拟时钟信号
  always #10 sys_clk = ~sys_clk;
  
  // 模块的实例化
  divider_six divider_six_inst(
    .sys_clk (sys_clk),
    .sys_rst_n (sys_rst_n),
    .clk_out (clk_out)
  );
endmodule
  • 加载仿真代码,进行仿真设置之后进行仿真

2.4 上板验证

  • 将信号输出到扩展IO口,通过示波器进行观察波形
  • 重新进行编译,连接板卡(下载器和电源)
  • 添加sof文件,进行程序下载
  • 连接示波器

2.5 优化

  • 这种做法是不严谨的,在低速系统中不易察觉,在高速系统中就容易出现问题,通过这种分频的方式表面上是对系统时钟进行了分频产生了新的低频时钟,上述得到的分频时钟,实际上与真正的分频时钟是有不同的;
  • 在FPGA当中凡是时钟信号都要连接到全局时钟网络,全局时钟网络也叫做全局时钟树,是FPGA厂商专门针对时钟路径进行设计的,能够使时钟信号到达各个寄存器的时间尽可能相同,减少时序问题的产生,上面产生的分频信号没有连接到全局时钟网络上,但是外部晶振产生的时钟信号,通过管脚连接到了专用时钟引脚上,自然连接到了FPGA全局时钟网络中
  • 在系统时钟工作下的信号比在上述分频信号工作下的信号更能在高速工作下保持稳定,如何对上述代码进行改进?使用时钟标志信号cnt_flag
module divider_six(
  input wire sys_clk,
  input wire sys_rst_n,
  
  // output reg clk_out
  output reg clk_flag;
);


  reg [2:0] cnt;
  
  // cnt变量
  always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
      cnt <= 2'd0;
    else if(cnt == 3'd5)
      cnt <= 3'd0;
    else
      cnt <= cnt + 3'd1;


  always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
      clk_flag <= 1'b0;
    else if(cnt == 3'd4)    // flag信号是在计数最大值减一的时候产生一个周期脉冲
      clk_flag <= 1'b1;
    else 
      clk_flag <= 1'b0;

  // 按照之前产生的分频时钟给变量a赋值
   reg a ;
  always @(posedge clk_out or negedge sys_rst_n) // 使用产生的分频时钟clk_out
    if(sys_rst_n == 1'b0)
      a <= 1'b0;  
    else 
      a <= a + 1'b1;

  // 时钟标志位产生的分频时钟对于变量进行赋值
  always@(posedge sys_clk or sys_rst_n)     // 仍然使用系统时钟,更加稳定
    if(sys_rst_n == 1'b0) 
      a <= 1'b0;
    else if(cnt_flag == 1'b1)
      a <= 1'b1;
  

endmodule

`timescale 1ns/1ns
module tb_divider_six();
  reg sys_clk;
  reg sys_rst_n;  

  wire [2:0] clk_flag;

  // 初始化时钟和复位信号
  initial begin
    sys_clk = 1'b0;
    sys_rst_n = 1'b0;
    #20;
    sys_rst_n = 1'b1;
  end
    
  // 模拟时钟信号
  always #10 sys_clk = ~sys_clk;
  
  // 模块的实例化
  divider_six divider_six_inst(
    .sys_clk (sys_clk),
    .sys_rst_n (sys_rst_n),
    .clk_flag (clk_flag)
  );
endmodule

产生一个用于标记 6 分频的 clk_flag 标志信号,这样每两 clk_flag 脉
冲之间的频率就是对 sys_clk 时钟信号的 6 分频,但是计数器计数的个数我们需增加一些,
如图 18-4 所示需要从 0~5 共 6 个数,否则不能实现 6 分频的功能。和方法 1 对比可以发
现,相当于把 clk_out 的上升沿信号变成了 clk_flag 的脉冲电平信号cnt_flag 是一样的道理),为后级模块实现相同的降频效果。**虽然这样会多使用一些寄存器资源,不过不用担心我们的系统是完全可以承担的起的,而得到的好处却远远大于这点资源的使用,能让系统更加稳定。
在后级模块中需要使用低频时钟的情况,我们就可以不用 clk_out 这种信号作为时
钟了,而是继续使用 sys_clk 系统时钟来作为时钟,但让其执行语句的条件以 clk_flag 信号
为高电平的时候有效。


本文转载于网络 如有侵权请联系删除

相关文章

  • 我利用SAP Leonardo机器学习服务里的图像相似度比较开发了一个应用

    Theoverallachitectureofthisprojectcouldbefoundbelow:(1)webuildanativemobileapplicationforendusersviaReact-Nativetechnology.(2)ArestfulAPIisdeployedinSAPCloudPlatform’sCloudFoundryEnvironment.ThisAPIistechnicallyimplementedbyanodejsapplicationrunninginSAPCloudPlatform.Onceendusersmakeaphotobythisapplication,thebinarystreamofphotowillbesenttorestfulAPI,andit’sexpectedthatthetopthreepictureswhichhavethelargestimagesimilaritywiththecurrentphotoaresentback.(3)TherestfulAPIfulfillstheimagesimilarityca

  • 编写高质量代码:改善JavaScript程序建议--函数式编程

    函数式编程已经在实际应用中经发挥了巨大作用,更有越来越多的语言不断地加入对诸如闭包、匿名函数等的支持,从某种程度上来讲,函数式编程正在逐步同化命令式编程。 建议1:禁用Function构造函数使用Function构造函数创建的函数具有顶级作用域。varn=1; functionf(){ varn=2; vare=newFunction("returnn;"); returne; } console.log(f()());//1复制建议2:推荐动态调用函数使用call和apply方法可以把一个函数转换为方法传递给某个对象。这种行为只是临时的,函数最终并没有作为对象的方法而存在,当函数被调用后,该对象方法会自动被注销。vara=[1,5,3]; varm=Math.max.apply(null,a); console.log(m);//5 m.max();//UncaughtTypeError:m.maxisnotafunction(…)复制建议3:使用闭包跨作用域开发闭包结构的两个特性: (1)封闭性,外界无法访问闭包内部的数据,如果在闭包内声明变量,外界是无法访问的

  • 「走进k8s」Docker三剑客之Docker Compose(七)

    前面说了5种网络模式:bridge,host,none,自定义网络,container。这次说下docker-compose。(一)DockerComposeDockerCompose是通过python编写的,Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景。①Compose官网https://docs.docker.com/compose/②由来通过dockerfile只能生成单一的容器(称之为service)。在日常的环境中,没有单独存在的应用,例如mysql,对应tomcat应用,redis内存数据库。多个应用搭建在一起形成一个完整的系统(称之为project)。总不能每次都一个一个创建吧。通过shell脚本的方式可以生成多个容器,但是非常的复杂,首先要精通shell脚本的开发,而且要理清容器间的业务关系。 Compose恰好满足了这样的需求。它允许用户通过一个单独的docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器为一个项目。③

  • Linux-485收发切换延迟的解决方法

    一、问题描述RS-485(亦称TIA-485,EIA-485)作为一种半双工总线,其收发过程不能同时进行。 RS-485通信的具体硬件原理可查阅其他资料,此处不详述。本文仅描述其控制方法及相关问题。通常由CPU引出三根管脚:两个UART管脚(记作PIN_RX、PIN_TX)和一个485收发方向控制管脚(记作PIN_DIR)。 这三根管脚会接在板上的485芯片上,485芯片再向板外引出“D+、D-”两根差分信号总线(差分信号具有搞干扰、传输距离远的优势)。应用程序编写时,在原来的普通串口通信基础上,加上485收发方向控制即可。 具体说来,UART发送过程中,将PIN_DIR脚拉高,发送完毕再将PIN_DIR脚拉低,使485总线可以接收数据。 对于无操作系统的裸机程序来说,485通信非常简单。 但在Linux应用程序编写中,这个方向切换存在延迟问题。Linux应用层485控制接口伪代码如下://初始化串口 fd=open("/dev/ttyS1",O_RDWR|O_NOCTTY); init_serial(fd,9600,8,1,'N'); set_

  • golang学习之go简单博客应用

    先说说golang的语法吧,个人觉得有以下特点:简洁,不管是变量、方法声明,还是代码编写,均十分简洁,效率也比较高非纯粹面向对象,但是go的struct类似c的struct,go的结构体还可以进行struct的包含,被包含的struct的方法被外层struct共享指针,方法传参时可以直接传指针,相比传值更加快速接口,go中规定,如果一个对象(struct)实现了interface中的所有方法,那么该struct便实现该接口chan的定义,用来各个线程(有人叫协程,超轻量级)间的通信,基本不用考虑死锁等问题默认大写开头的结构体、方法等为public公有,小写开头为private私有go的特性还有很多,菜鸟就不多说了,下面是一个用go开发的博客应用,功能比较简单,直接上菜:系统环境go版本:1.5rc1 系统:win7 数据库:mongodb(使用mgo操作) web框架:revel样式:bootstrap复制页面效果博客主页:新建博客:联系:博客详情:界面差不多就是这样,很简单吧,下节笔记是博客新增部分,慢慢来。。。Header页<divclass="container-

  • MySQL5.7 字符集设置

    MySQL5.7字符集设置 发布于2021-12-1411:07:46阅读 2290   MySQL5.7字符集设置 character-set-client-handshake=FALSE character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci init_connect=’SETNAMESutf8mb4’复制 复制 character-set-client-handshake 用来控制客户端声明使用字符集和服务端声明使用的字符集在不一致的情况下的兼容性. character-set-client-handshake=false #设置为False,在客户端字符集和服务端字符集不同的时候将拒绝连接到服务端执行任何操作复制 复制 #默认为true character-set-client-handshake=true #设置为True,即使客户端字符集和服务端字符集不同,也允许客户端连接复制 复制 character-set-server 声明服务端的字符编码,推荐使用utf

  • codeforces 132C Logo Turtle(dp)

    可以用三维dp来保存状态, dp[i][j][k]表示在前i个字符变换了j步之后方向为k(k=1ork=0)的最优解,也就是离原点的最大距离。这里规定0方向为正方向,1位负方向,表示的是当前这个人朝哪个方向。这两个方向是对立的。 所以就可以递推一个关系式,分第i个字符为'F' or 'T'时 如果为'F'   依次枚举在第i个位置变换了几步,这是枚举的范围为0~j,假设变换了k步(和上面的dp[i][j][k]当中的k不是一个)     1.如果当k为奇数的时候,就是相当于变化了1步,所以'F'就变成'T'了,那么他的方向也因此变化了。所以当前的方向一定和上一步(也就是i-1时的方向)的方向相反,所以有dp[i][j][0]=max(dp[i][j][0],dp[i-1][j-k][1]), 同理,dp[i][j][1]=max(dp[i][j][1],dp[i -1][j-k][0])     2.如果k为偶数,相当于没有变化,所以还是字符'F',如果是正方向,那么他就可以由上一步继续向正方向走一步,也就是加1, 如果是负方

  • 20175212童皓桢 结对编程项目-四则运算 第一周

    20175212童皓桢结对编程项目-四则运算第一周 需求分析 实现一个命令行程序,要求自动生成小学四则运算题目(加减乘除) 支持多运算符 测试结果的正确性,用户输入错误时给出正解 统计题目正确率 设计思路 首先要能够按照按人的一般习惯,生成自左向右计算的加减乘除算式。 随机生成多运算符,并随机生成相对应个数的整数 利用eval方法直接计算随机生成的算式的值,并和用户的输入作比较 判断正确率 设计测试类,利用JUnit测试整数的四则运算 UML类图 关键代码 如何生成符合要求格式的运算式 for(i=0;i<n;i++){ inta=random.nextInt(5)+1;//1-5个运算符 int[]number=newint[a+1];//创建一个number数组 Stringex=newString(); for(intj=0;j<=a;j++){//生产a+1个数字,即2-6个数字 number[j]=random.nextInt(100)+1;//生成1-100的整数 } for(intj=0;j<a;j++)

  • 批量转移MySql数据表及附带脚本

    一、在开发流程中,我们会部署多环境,其中数据库结构及数据同步是非常重要的一环,为了便于项目复盘,我们往往会保留数据库一段时间,比如类似这样的方式:db_20200210,db_20200220,db_20200229,db_xxxxxxxx,但MySql是不支持直接修改数据库名称的,我们在从阿里云的RDS生产环境同步到仿真环境就遇到这个问题,每次都是直接这样命名,但项目的配置文件配置的数据库名称是db,避免不了要改配置文件,就是用分布式配置,也是多了一个环节,人为的操作是不能保证不出错误的,所有就有了这个脚本来完成这个过程。 二、脚本主要完成的功能: 1、数据表迁移, 2、是否删除原来数据库(因为RDS做DTS迁移是不能存在相同数据库名称的,所有加了这个功能) 三、脚本的使用: 1、source:源数据库名称 2、target:目标数据库名称 3、是否删除源数据库 四、脚本运行 1、在客户端运行 1CREATEDEFINER=`root`@`%`PROCEDURE`move_tables`(IN`source`VARCHAR(20),IN`target`VARCHAR(20),IN

  • 网站访问403.14目录浏览启用权限不足

  • [golang] GOROOT 及 GOPATH

    GOROOT:标识GoSDK的位置,一般情况下不用改,除非要切换到其他Go版本 GOPATH:定义工作区(workspace)的位置。默认情况下为~/go目录。其中包含 bin:go编译后的可执行文件 pkg:包含编译后的包代码,即.a文件 src:源码目录,包含诸如.go,.c,.g及.s等类型文件 GOPATH也是goinstall等命令依赖的目录。可以使用默认目录,也可以通过设置$GOPATH来自定义。 但推荐显式地设置一下$GOPATH,这样能明确自己所处的工作空间位置,同时将$GOPATH/bin添加到系统的$PATH中这样通过goinstall安装的三方工具就可直接运行了。 fishshell中设置$GOPATH: #~/.config/fish/config.fish set-xGOPATH$HOME/go#或其他位置 set-xPATH$PATH$GOPATH/bin复制   除了以上两个环境变量,还有很多可配置的Gotool环境变量,可通过goenv查看到: $goenv GO111MODULE="" GOARCH="amd64"

  • MVC文件上传 - 使用jquery异步上传并客户端验证类型和大小

     本篇体验MVC上传文件,从表单上传过渡到jquery异步上传。  MVC最基本的上传文件是通过form表单提交方式 □前台视图部分 <%using(Html.BeginForm("FileUpload","FileUpload",FormMethod.Post,new{enctype="multipart/form-data"}){)%>复制 <inputname="uploadFile"type="file"/>复制 <inputtype="submit"value="UploadFile"/>复制 <%}%>复制 □控制器部分 [HttpMethod.Post]复制 publicActionResultFileUpload(HttpPostedFileBaseuploadFile)复制 {复制 if(uploadFile.ContenctLength>0)复制 {复制 //获得保存路径复制 stringfilePath=Path.Combine(HttpContext.Server.MapPath("

  • 190713_JavaScript小案例_图片切换

      这一阵老大让我来搞搞前端,维护一下产品,问题是前端我也是一窍不通啊,研究了两天Html和Js,简单的写两个小例子练练手   这个例子要实现的效果图就是这个样子的             点击上一张或者下一张,实现图片的切换和上面文字的显示   代码很简单,直接贴出来:    1<!DOCTYPEhtml> 2<html> 3<head> 4<metacharset="utf-8"> 5<title>图片切换</title> 6<styletype="text/css"> 7*{ 8margin:0; 9padding:0; 10} 11 12#outer{ 13width:500px; 14margin:50pxauto; 15padding:10px; 16background-color:yellowgreen; 17text-align:center; 18} 19 20#outer#pic{ 21width:500px; 22height:

  • Vue之添加全局变量

    定义全局变量 原理: 设置一个专用的的全局变量模块文件,模块里面定义一些变量初始状态,用exportdefault暴露出去,在main.js里面使用Vue.prototype挂载到vue实例上面或者在其它地方需要使用时,引入该模块便可。 全局变量模块文件: Global.vue文件: <script> constserverSrc='www.baidu.com'; consttoken='12345678'; consthasEnter=false; constuserSite="中国钓鱼岛"; exportdefault { userSite,//用户地址 token,//用户token身份 serverSrc,//服务器地址 hasEnter,//用户登录状态 } </script>复制   使用方式1: 在需要的地方引用进全局变量模块文件,然后通过文件里面的变量名字获取全局变量参数值。 在text1.vue组件中使用: <template> <div>{{token}}</div> &l

  • Codeforces1078E

    我们可以支持如果当前格子是空/0/1向某个方向走一步 如果当前格子是1向右走一步:rlst 如果当前格子是空向左走一步:rltl 可以支持将当前位置的0/1复制到自己的某个方向,也可以支持复制后异或1 将当前位置复制到上面一个格子:u10dt 将当前位置异或1的值复制到上面一个格子:u01dt 还可以支持位运算操作 将当前位置变成和右边一个位置的and:0rt 将当前位置变成和右边一个位置的or:rr01ltl10rtl1rt 异或操作比较麻烦,我们可以支持这样一个操作 如果当前位置是0,且右边的格子位置也是0,将右边的右边的格子设成0/1:rltrlt(0/1) 但是这样无法确定最后所在的位置,我们可以在左边的几个格子处放一个0,做完上面的操作后执行:lllrltl 还有一种不用讨论的异或方法,对于两个布尔变量a和b,我们有a^b=(!a&b)|(a&!b),用前面的两种位运算操作就行了 然后就是大讨论了 spj #include<bits/stdc++.h> #definerep(i,a,b)for(inti=a;i<=b;i++)

  • STS中搭建SpringMVC工程

    1环境说明   首次接触Spring,面对这么一个优秀的框架,先从环境搞起,再慢慢学。开发环境选择SpringToolSuite,得专业点不是?Maven选2.2.1,JDK还是1.6,Tomcat采用7。下面一步步来… 2STS安装    SpringToolSuite是免费的一款基于Eclipse的Spring开发的定制版IDE,其官方下载地址为: http://spring.io/tools/sts/all 我选择的是现在最新的4.3.1版本,64位。 Windows上面它就是一exe可执行文件,安装自不必细说。 3Maven安装    对于项目的构建来说,哪里都少不了Maven的踪影,但是根据自身目前的使用情况来看,我还是选择Maven2,放弃Maven3,其官方下载地址为: http://maven.apache.org/download.cgi 具体版本,我选择的是2.2.1版。 下载下来就是zip包,解压缩到相关目录后,需要配置下环境变量,和Java类似。 配置好后,在命令行中,执行个m

  • 具体数学-第4课(多重求和方法)

    原文链接: 具体数学-第4课-WeiYangBlog 今天讲了多重求和,也就是一个和式由多个下标来指定。 首先是最简单的形式: 例题1 下面给出一个对称矩阵:求:这是这个矩阵的上三角加对角线求和,因为是对称的嘛,可以补全下三角,加上对角线就行了。所以 例题2 下面再看一个例子:同样模仿上例调换位置,得到:所以至此解完,然后可以推出一个著名的不等式————切比雪夫不等式:如果那么反之如果那么更一般的结论,给定两个序列和,求下面式子最大值与最小值:其中是的一个排列。答案是增序最大,降序最小,至于为什么,下面给出两种证明方法。 方法1 如上图所示,和按照递增顺序排列,每个方格的面积代表与的乘积,记为。那么上面的求和式其实就是每一行每一列都必须有且只有一块被取。考虑第一行,如果不取,取其他的,那么第一列也只能取其他的,这样的话也就取不了了。但是发现并且两种取法影响的行和列都是相同的,这说明了,取和不如取和。所以必取,然后第一行第一列就不能取了。剩下的方阵用相同的方法可以得出必取,也就是主对角线。同理最小取法用副对角线可以推出。 方法2 设数列和非单调递减,那么有如下证明:反之亦证。 题

  • STL实战—演讲比赛流程管理系统

    演讲比赛流程管理系统 1、演讲比赛程序需求 1.1比赛规则 学校举行一场演讲比赛,共有12个人参加。比赛共两轮,第一轮为淘汰赛,第二轮为决赛。 比赛方式:分组比赛,每组6个人;选手每次要随机分组,进行比赛 每名选手都有对应的编号,如10001~10012 第一轮分为两个小组,每组6个人。整体按照选手编号进行抽签后顺序演讲。 当小组演讲完后,淘汰组内排名最后的三个选手,前三名晋级,进入下一轮的比赛。 第二轮为决赛,前三名胜出 每轮比赛过后需要显示晋级选手的信息 1.2程序功能 开始演讲比赛:完成整届比赛的流程,每个比赛阶段需要给用户一个提示,用户按任意键后继续下一个阶段 查看往届记录:查看之前比赛前三名结果,每次比赛都会记录到文件中,文件用.csv后缀名保存 清空比赛记录:将文件中数据清空 退出比赛程序:可以退出当前程序 1.3程序效果图: 2、项目创建 创建项目步骤如下: 创建新项目 添加文件 2.1创建项目 打开vs2017后,点击创建新项目,创建新的C++项目 如图: 填写项目名称以及选取项目路径,点击确定生成项目 2.2添加文件 右键源文件,进行添加

  • 其他计算机&amp;网络&amp;行业知识

    互联网数据中心(IDC) VIDC(端口映射)CVM云服务器(CloudVirtualMachine)   IDE集成开发环境:开发工具  QA:QualityAssurance,直译为质量保证 OP:Operator管理员  1.屏幕分辨率中的文本大小的设置影响网页显示比例 2.用公司Github,需要配置自己的sshkey,把配置好的文件给管理者让他有开通权限,这样就能push和pull了     uml建模  时序图协作图交互图 用例图 流程图。。。。   类图:模块名称+特性+方法/行为  

  • Form验证补充

    1.urls.py中的代码: urlpatterns=[ path('fmindex.html/',fm.fmindex)]2.index.html中代码:复制 <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body>{%foriteminobj%}{{item.user}}{{item.email}}{%endfor%}</body></html>3.fm.py中代码:复制 #_author:来童星#date:2020/5/5fromdjango.shortcutsimportrender,HttpResponsefromapp01importmodelsfromdjangoimportformsfromdjango.formsimportfieldsfromdjango.core.exceptionsimportValidationErrorc

  • 此系统上禁止运行脚本 问题

    参考https://blog.csdn.net/qq_34516746/article/details/123615008     win10 使用管理员打开powershell 敲入以下命令后,输入Y set-executionpolicyremotesigned复制  

相关推荐

推荐阅读