// input
clock;
rest_n; // n表示低电平复位
//output
o_data;
module module_a(
// module是关键字表示声明一个模块
// module module名
// module .. endmodule是一对
// module module_name(模块的输入输出列表);
// 输入只能是wire变量,只有线才能连入module
// 输出可以是wire类型也可以是reg类型,一般是reg变量
// 不写位宽,默认是1bit位宽的
input wire clk,
input wire rest_n,
output reg [7:0] o_data // 8bit数据
);
endmodule
module Lut_m(
input wire sclk,
input wire rst_n,
input wire [9:0] i_data,
input wire [15:0] i_sin,
output reg [15:0] o_cos,
output reg o_div_clk,
output reg [9:0] div_clk,
// module中包含子module
// 嵌套子模块,就是例化,首先要先将子模块写成单独的模块
// 例化:先写模块的名字 例化的名字
sub_m u_sub_m (
// 如何引入接口
//用点的方式先写模块的接口(接入的接口)
.sclk (sclk),
.rst_n (rst_n),
.i_data (i_data),
.i_sin (i_sin),
.o_cos (o_cos),
.o_data (o_data)
);
sub_n u_sub_n(
.sclk (sclk),
.rst_n (rst_n),
.i_data (i_data),
.i_sin (i_sin),
.o_data (o_data)
);
);
endmodule
// 输入50MHz,二分频
module div_clk(
input wire sclk,
input wire rst_n,
output reg div_clk_o
);
// 分频器,需要一个计数器,二分频,需要记录01状态,1bit
// div_cnt就是一个计数器
// 计数器为0的时候,输出为低,计数器为1的时候,输出为高
reg div_cnt;
//寄存器使用always语句进行赋值的
// 这是一种异步复位的写法
// 在时钟上升沿的时候触发逻辑
// 复位使用作用下实现复位逻辑
// 计数器逻辑
always@(posedge sclk or negedge rst_n)
begin
if(rst_n == 1'b0)
begin
div_cnt <= 1'b0;
end
else begin
div_cnt <= div_cnt + 1'b0;
end
end
// 产生div_sclk_o
always@(posedge sclk or negedge rst_n) begin
if(rst == 1'b0) begin
div_cnt <= 1'b0;
end
else if(div_cnt == 0) begin
div_clk_o <= 1;
end
else
div_clk_o <= 0;
end
endmodule
8分频 -- 4周期反转一次
4分频 -- 2周期反转一次
3分频 -- 1.5周期/3周期
5分频 -- 2.5周期/5周期
7分频 -- 3.5周期/7周期
后期会补充分频器和计数器的书写方式
大家好,又见面了,我是你们的朋友全栈君。提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、Modelsim安装二、破解1.拷贝Crack文件夹中的文件2.破解过程可能出现的错误前言Modelsim的安装与破解使用一、Modelsim安装打开下在之后的文件夹,直接双击exe文件进行安装。不熟悉时,可以直接使用默认路径进行安装,不进行路径上的修改。 1、下载并解压好文件包,然后运行安装程序根据向导提示进行软件安装 2、依提示安装软件过程中需要注意的是,会有三个弹出框提示,首先是是否创建桌面快捷方式提示框弹出,点击是即可 3、弹出是否添加到系统环境变量提示框,同样点击是 4、在安装的最后,提示是否安装KeyDriver,点击否,不要安装KeyDriver 5、ModelsimSE-6410.6d版本软件安装成功 二、破解1.拷贝Crack文件夹中的文件2.破解过程1、接下来对软件进行破解操作,将Patch文件夹内破解文件MentorKG.exe和patch64_dll.bat复制到软件安装路径下,然后双击运行patch64_dll.bat2、将生成的许可证另存为
14.1动机一:数据压缩降维也是一种无监督学习的方法,降维并不需要使用数据的标签。降维的其中一个目的是数据压缩,数据压缩不仅能够压缩数据,使用较少的计算机内存或磁盘空间,更可以加快我们的学习算法。降维能很好的处理特征冗余,例如:在做工程时,有几个不同的工程队,也许第一个工程队给你二百个特征,第二工程队给你另外三百个的特征,第三工程队给你五百个特征,一千多个特征都在一起,这些特征中往往都存在着巨大的冗余,而且去跟踪这些大量的特征会变得及其困难。将2维特征降到1维以下举个例子,假如测量某个物品的长度,横轴表示使用厘米作为单位进行测量的结果,纵轴表示使用英尺作为单位进行测量的结果,这两个特征是由大量冗余的但是由于测量时的四舍五入导致测量结果并不一定相等,因此我们想通过降维的方式去掉冗余的数据此时想找到一条看起来大多数据都落在其旁边的线,而使得所有的数据都能投影在刚才的线上,通过这种做法,我能够测量出每个样本在线上的位置以建立新特征Z_1,即是原来的数据我需要用x_{(1)},x_{(2)}两个维度的特征进行表示,而现在只需要通过新特征Z的一个值就能表示原有的两个特征的内容通过把样本投影在一条
背景HLS和HTTPFLVHLS局限性HLS流最大的局限性主要有:在服务端对直播流进行切分处理之后客户端才能拉取到数据,所以整体延迟较高,通常延迟可达到20~30s。由于直播流分片拉取,所以客户端需要频繁地进行http请求,可能会导致播放卡顿。通过video标签进行hls播放,无法很好的在业务层进行定制化操作以及数据监控。因此,前端还需支持更低延迟也更稳定的直播流,FLV直播流能满足当下需求。HTTPFLV是将RTMP封装在HTTP协议之上的用于传输flv格式的协议,其传输的http_flv是一个文件大小无上限的http流的文件。相较于HLS,HTTPFLV无需在服务端对直播流进行切片处理,所以具有低延迟的优势,平均延迟只有1~2s。此外,HTTPFLV还具有一定程度上避免防火墙干扰、兼容302跳转、支持HTTPS通道加密等优势。HTTPFLV局限性既然HTTPFLV相较于HLS有如此大的优势,直接使用HTTPFLV不是更好吗?由于HTTPFLV的支持需要依赖于MSE(MediaSourceExtensions)API和fetch+streamAPI,而iOS浏览器不支持MSEAPI,
这5款超级有用的开源工具,你肯定会喜欢的!包括H5制作工具,API请求生成器(postwoman),文章生成工具,一键文章发布工具(JustWrite),全能代理服务器安卓版(goproxy)。1.H5制作工具夸克H5是一款基于WEB的H5制作工具。让不会写代码的人也能轻松快速上手制作H5页面。类似易企秀、百度H5的H5制作、建站工具。技术栈:前端vue2+vue-router+vuex服务端Koa2+mongodb项目地址:https://github.com/huangwei9527/quark-h5在线访问地址:http://47.104.247.183:4000运行截图:2.postwoman相信你肯定通过postman,postwoman和他一样,都是模拟发送请求的工具。项目采用简约的UI设计,丰富的自定义设置,可以根据自己的喜好进行主题,彩色框架的切换。技术栈:Chromium+HTML+CSS+JavaScript+Vue+Nuxt项目地址:https://github.com/liyasthomas/postwoman在线访问地址:https://postwoman.i
摘要:夸张点说,技术的发展与历史一样,顺之者昌,逆之者亡。JS开发者们,赶紧拥抱Async/Await吧!GitHub仓库:Fundebug/promise-asyncawait早在半年多之前,我就在鼓吹Async/Await替代Promise的6个理由,似乎还招致了一些批评。然而,直到最近,我才真正开始进行代码重构,抛弃Promise,全面使用Async/Await。因为,Node8终于LTS了!Async/Await真的比Promise好吗?是的是的。这些天,我大概重构了1000行代码,最大的感觉是代码简洁了很多:真正地用同步的方式写异步代码不用写then及其回调函数,减少代码行数,也避免了代码嵌套所有异步调用可以写在同一个代码块中,无需定义多余的中间变量async函数会隐式地返回一个Promise,因此可以直接return变量,无需使用Promise.resolve进行转换下面,我们可以通过一个非常简单的示例来体验一下Async/Await的酸爽:示例1constPromise=require("bluebird") varreadFile=Promise.p
1.ElementElement,一套为开发者、设计师和产品经理准备的基于Vue2.0的桌面端组件库 中文文档|github地址 Element2.iView一套基于Vue.js的高质量UI组件库 中文文档|github地址 iView3.vue-element-adminvue-element-admin是基于Vue2.0,配合使用ElementUI组件库的一个前端管理后台集成解决方案。它使用了最新的前端技术栈,提炼了典型的业务模型,提供了丰富的功能组件,它可以帮助你快速搭建企业级中后台产品原型。 中文文档|github地址 vue-element-admin4.VueMaterial通过VueMaterial和Vue2.0建立精美的app应用 中文文档|github地址 VueMaterial5.VueStrap基于Vue.js构建的Bootstrap组件。该仓库包含一系列基于Bootstrap标记和CSS的本地Vue.js组件。所以不需要jQuery和Bootstrap的JavaScript文件,唯一需要依赖的是:Vue.js(要求版本为^0.12,基于0.12.10版本做的测试
理解应用程序的输入/输出(I/O)模型,意味着其在计划处理负载与残酷的实际使用场景之间的差异。若应用程序比较小,也没有服务于很高的负载,也许它影响甚微。但随着应用程序的负载逐渐上涨,采用错误的I/O模型有可能会让你到处踩坑,伤痕累累。正如大部分存在多种解决途径的场景一样,重点不在于哪一种途径更好,而是在于理解如何进行权衡。让我们来参观下I/O的景观,看下可以从中窃取点什么。在这篇文章,我们将会结合Apache分别比较Node,Java,Go,和PHP,讨论这些不同的语言如何对他们的I/O进行建模,各个模型的优点和缺点,并得出一些初步基准的结论。如果关心你下一个Web应用的I/O性能,那你就找对文章了。I/O基础知识:快速回顾为了理解与I/O密切相关的因素,必须先来回顾在操作系统底层的概念。虽然不会直接处理这些概念的大部分,但通过应用程序的运行时环境你一直在间接地处理他们。而关键在于细节。系统调用首先,我们有系统调用,它可以描述成这样:你的程序(在“用户区域”,正如他们所说的)必须让操作系统内核在它自身执行I/O操作。“系统调用”(syscall)意味着你的程序要求内核做某事。不同的操作
python版本:python3.9 libpcap版本:1.11.0b7 pythonlibpcap库是底层绑定c语言libpcap库的开发包,旨在提供python应用可访问的unixclibpcap库API(以及为win32系统提供的Npcap、WinPcap),直接使用底层c代码,性能很好。 这里记录下Windows10环境下python3.9如何安装及使用libpcap库(Linux和mac系统可参考Windows)。 pypi地址:https://pypi.org/project/libpcap/ github地址:https://github.com/karpierz/libpcap 一、安装libpcap库 1、在线安装 直接使用pip进行安装: pipinstalllibpcap 默认安装最新版本。 2、离线安装 2.1下载离线安装文件 可以在pypi页面源代码或whl文件。 2.2 执行离线安装操作 1)可以使用源码进行安装 解压文件到当前目录,然后执行安装命令: python-mpipinstall./libpcap-
1、数组的概述 /* *一、数组的概述 *1.数组的理解:数组(Array),是多个相同类型数据按一定顺序排列的集合, *并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。 * *2.数组的相关概念: *>数组名 *>元素 *>角标、下标、索引 *>数组的长度:元素的个数 * *3.数组的特点: *1)数组属于引用类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型。 *2)创建数组对象会在内存中开辟一整块连续的空间; *3)数组的长度一旦确定,就不能修改; *4)数组是有序排列的。 * *4.数组的分类: * ①按照维数:一维数组、二维数组、三维数组…… *②按照数组元素类型:基本数据类型元素的数组、引用类型元素的数组 * */ 复制 2、一堆数组的使用 /* * ①一维数组的声明和初始化 *②如何调用数组的指定位置的元素 *③如何获取数组的长度 *④如何遍历数组 *⑤数组元素的默认初始化值:见ArrayTest1.java *⑥数组的内存解析:见ArrayTest1.java */ 复制 、代码案例1——ArrayTest.ja
packagecom.ziyun.cms.util; importjava.sql.Connection; importjava.sql.DriverManager; importjava.sql.PreparedStatement; importjava.sql.ResultSet; importjava.util.Properties; importlombok.extern.slf4j.Slf4j; @Slf4j publicclassAccessUtil{ publicstaticfinalStringMDB_FILE_PATH_BASE="d:\\202104.mdb"; publicstaticfinalStringSQL_BASE="select图号,流水号,检测结果,检测时间,检测人,检测错误信息,检测设置fromtest"; publicstaticvoidmain(String[]args)throwsException{ Stringsql=SQL_BASE+"where检测时间>='2021-04-2919:00:0
最近在进行vue.js+webpack进行模块化开发的时候,遇到一个奇怪的问题。 问题是这样的: 1.在main.js文件中引入bootstrap的js和css。 2.自己写了一个Header.vue模块,其中的导航条使用的bootstrap的class和自己的class。 <ulclass="navbar-navmy-navBar"id="my-navBar">复制 3.在Header.vue中定义了一些ulli和a标签的样式。 ul.my-navBar{ margin-left:200px; padding:0; color:#333; float:left; /*max-height:75px;*/ vertical-align:middle; } .my-navBar*{ margin:0; padding:0; list-style:none; font-size:16px; font-family:"PingFangSC-Medium"; font-weight:bold; color:#333333; } .my-navBar>li>a{
本文是一篇实战demo,使用框架为io.jsonwebtoken的jjwt。你会了解到token的生成,解析过程,最后将在项目中体验jwt的使用过程。如果不是很了解jwt,可以参考以下文章补充一下。 什么是JWT--JSONWEBTOKEN 一篇文章带你分清楚JWT,JWS与JWE 目录 1、引入所用到的库 2、生成一个token 3、解析Token 4、自定义加密数据 5、实际运用 6、注意事项 7、其他可选项 1、引入所用到的库 <!--jwt相关--> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-api</artifactId> <version>0.11.2</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-
题目 题解 我就是个辣鸡,状压都没看出来,只会打dfs 对于m<=5,肯定考虑状压 令C为1,P为0 那么二进制状态最多也就11111,十进制的31,数组不大,可以过80 令dp[i][s]表示序列长度为i,最后m位状态为s的方案数,肯定可以通过dp[i][k]转移过来 至于k,s能否进行转移,我们先进行dfs预处理出所有合法情况,且两个状态能否转移。用vis数组标记。 之后枚举起点即前m个的情况,进行dp即可。 需要注意的是这个序列是环形的,因而我们需要多搞一个m,那么最后我们回到了初始的状态 朴素DP代码如下 #include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<queue> #include<algorithm> #include<vector> #include<map> #include<set> #include<set> #include&
计时器setTimeout() setTimeout()计时器,在载入后延迟指定时间后,去执行一次表达式,仅执行一次。 语法: setTimeout(代码,延迟时间);复制 参数说明: 1.要调用的函数或要执行的代码串。 2.延时时间:在执行代码前需等待的时间,以毫秒为单位(1s=1000ms)。 当我们打开网页3秒后,在弹出一个提示框,代码如下: <!DOCTYPEHTML> <html> <head> <scripttype="text/javascript"> setTimeout("alert('Hello!')",3000); </script> </head> <body> </body> </html>复制 当按钮start被点击时,setTimeout()调用函数,在5秒后弹出一个提示框。 <!DOCTYPEHTML> <html> <head> <scripttype="text/javascrip
一、需求,某客户问_no_or_expansion=TRUE这个参数干啥用的?是否建议在11.2.0.4环境上设置? 需求如上,那么我们首先了解一下这个参数是干啥的?另外就是探索为什么客户以前的DBA设置这个参数?非默认隐含参数 二、参数说明 2.1参数含义 参考一个网站的论坛https://community.oracle.com/mosc/discussion/3058861/no-or-expansion-parameter复制 说的很清楚! OrexpansionisakindofquerytransformationthatconvertsORtoUNION. Sayyouhaveaquery select*fromempwhereid=1ORname='Vishal' OraclemaychoosetoexpandthisORcondition,breakthisSQLintotwopiecesusingaUNIONclause. Newtransformedquerywouldlooklike select*fromempwhereid=1 UNION
主要思想就是二分答案,关键在于如何判断二分的平均值是否可行。 在这里之间利用洛谷题解推导过程@communist,因为我没找到这些符号怎么打…… ans就是二分的平均值,那么假设存在更好的或者等于的,满足第一个式子,即可得到最后一个。 那么只要每一次线性求出每个点对应的最小前缀,最小后缀,判断是否有一组满足最后一个式子即可。 O(nlog(n)),加上一点常数。 代码: #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<queue> #include<vector> usingnamespacestd; #definemaxn100005 constdoubleinf=999999999.0; constdoubleeps=1e-6; doublesumf[maxn],sumb[maxn],mf[maxn],mb[maxn],now[maxn],a[maxn
vbs查找行插入文本行 VBS对文本文件编辑只有使用FileSystemObject的OpenTextFile方法。然而OpenTextfile只有读和写还有追加的功能,而且每种功能只能单独使用,太无语! 我便写了个脚本。主要功能是实现对读取每一行然后与关键字符串进行对比,最后在与关键字符串相符的行后面输入自己想输入的字符串行。 代码如下: OptionExplicit PrivateFunctionSpecifyToWrite(FilePath,SearchString,IntoString) ConstForReading=1,ForWriting=2 Dimfso,f,Msg DimWriteString,ReadString Setfso=CreateObject("Scripting.FileSystemObject")'创建FileSystemObject对象并赋值给fso Setf=fso.OpenTextFile(Filepath,ForReading)'使用OpenTextfile的方法并赋值f '修改段begin DoUntilf.AtEndOfSt
代码托管在:https://github.com/fabe2ry/classloaderDemo 初始化数据库 如果你写过操作数据库的程序的话,可能会注意,有的代码会在程序的开头,有Class.forName("com.mysql.jdbc.Driver");的代码,并且告诉你这是在进行数据库的初始化,注册jdbc的驱动;但是其实如果你去掉这段代码,并不会影响程序的正常运行,当然这是需要在JDK6之后才行这样 importjava.sql.*; publicclassMySQLDemo{ //JDBC驱动名及数据库URL staticfinalStringJDBC_DRIVER="com.mysql.jdbc.Driver"; staticfinalStringDB_URL="jdbc:mysql://localhost:3306/RUNOOB"; //数据库的用户名与密码,需要根据自己的设置 staticfinalStringUSER="root"; staticfinalStringPASS="123456"; publicstaticvoidmain(String[]ar
(转载)WindowsPhone问题笔记--正确选择buildaction解决媒体资源无法读取问题 链接:http://www.cnblogs.com/qinxg/archive/2012/07/17/2594503.html 在开发过程中遇到了图片加载器与视频播放器无法正常读取媒体资源的问题。 在代码中图片路径是正确的,图片无法正常读出。而视频部分采取相同的代码,却可以正常读出。 读取图片代码如下: 读取视频代码如下: (转载)WindowsPhone问题笔记--正确选择buildaction解决媒体资源无法读取问题 其中2个的地址相似都为:/Assets/XXXX/XXX.XXX 读取图片错误信息如下: 后对比视频文件与图片文件时发现问题。 原来图片和视频的生成操作(buildaction)设置有差别。 视频的为:内容(content) &
以下是使用Redis在高并发下实现的一把分布式锁示例,直接上代码,两种方式: 实现方式一:直接用Redis当分布式锁 @RequestMapping("/deduct_stock") publicStringgetbykey(Stringkey){ StringlockKey="product"+key; Stringuuid=UUID.randomUUID().toString(); //最简单的分布式锁 Booleanlocked=stringRedisTemplate.opsForValue().setIfAbsent(lockKey,uuid,30,TimeUnit.SECONDS); if(!locked){ return"error_code"; } try{ synchronized(this){ Stringresult=stringRedisTemplate.opsForValue().get(key); if(StringUtils.hasLength(result)){ intnumber=Integer.parseInt(result); if(number&
目录一、组员职责分工二、github的提交日志截图(鼓励小粒度提交)三、程序运行截图四、程序运行环境五、GUI界面六、基础功能实现七、鼓励有想法且有用的功能八、遇到的困难及解决方法邓泽源张庆焰姚斌锟朱宏蔡雅菁吴洁敏周鑫煌王景弘陈展鸿陈观鸿九、马后炮十、评估每位组员的贡献比例 组长博客 一、组员职责分工 组员 分工 邓泽源 后端 姚彬锟 后端 张庆焰 前端 周鑫煌 UI原型图 陈展鸿 后端 陈观鸿 前端 吴洁敏 博客 朱宏 爬数据 二、github的提交日志截图(鼓励小粒度提交) 三、程序运行截图 美团 商圈信息爬取(JSON格式) 美食与商户评价 四、程序运行环境 用户要求:Android5.0以上版本 UI设计:磨刀 前端要求:Android5.0+ 后端要求:windows10python3.7 五、GUI界面 六、基础功能实现 1.能将店铺的名称、综合评分、详细地址、联系电话、营业时间、许可证、经纬度、平均消费、所属品牌、相册爬取下来 2.前端能将信息进行展示 3.测评出福州最受欢迎的