- 博客(46)
- 收藏
- 关注
原创 verilog 手撕代码记录
1.简易式同步fifo,3个always块搞定。2.异步fifo常见问题3.倍频器4.分频器5.边沿检测器6.序列检测器7.贩卖机
2022-10-03 20:55:33
787
1
原创 4.25常见问题
gvim的基本操作终端中gvim+对应的Mikefile文件即可打开Mikefile文件使用的时候有三种模型,一般模式,插入模式,命令行模型一般模式:以vi打开一个文件就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用上下左右按键来移动光标,你可以使用删除字符或删除整行来处理文件内容, 也可以使用复制、粘贴来处理你的文件数据。编辑模式:在一般模式中可以进行删除、复制、粘贴等的操作,但是却无法编辑文件的内容,只有当到你按下【i, I, o, O, a, A, r, R】
2022-04-25 20:17:23
570
原创 从100个数中找到最大的两个数
Verilog有点难顶,用always块完成,要是用java的话,将一百个数放在一个数组里面,排序就行了下面代码中的data是一个数,应该是给一百次data才行,不知道要怎么给这个data用out1和out2作为中间变量存储结果,用cnt进行计数,100次的时候更新max1,max2module top(input clk,rst,input [7:0] data,output reg [7:0] max1,output reg [7:0] max2);reg [6:0]
2022-04-12 15:17:42
870
1
原创 写一个100MHz的时钟
没啥说的,上代码不指定timescale的话,默认时间精度也是1ns`timescale 1ns/1psmodule clkgen1();reg clk;initialclk = 1'b0;always begin #5 clk=~clk;endendmodule
2022-04-12 14:30:22
1327
原创 带进位输入、输出的两位全加器
先写一位全加器,然后再写个顶层模块,调用两个一位全加器,其中第一个加法器的cout作为第二个加法器的cinS = a^b^cin;Cout = a&b|a&cin|b&cin;
2022-04-12 11:54:38
3015
原创 序列信号发生器
序列信号发生器,在clk信号作用下周期性输出“0010110111"module seqgen( clk, rst_n, Q); input clk, rst_n; output Q; reg Q; reg [9:0] Q_temp; always@(posedge clk or negedge rst_n) begin if(!rst_n) begin Q <= 1'b0; Q_temp <=
2022-04-12 11:51:15
870
原创 “11010“ 序列检测器
用有限状态机做,状态机的题主要是用模板做,三段式或者两段式,要画出正确的状态转移图见Verilog p109module seqdet(D_out,D_in,rst_n,clk); parameter IDLE = 3'd0,A = 3'd1,B = 3'd2,C = 3'd3,D = 3'd4,E = 3'd5; output D_out; input D_in,rst_n,clk; reg [2:0] state,next_state; wir.
2022-04-12 10:07:44
1096
原创 数值的整数次方 java 算法与数据结构
实现pow(x,n),即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。输入:x = 2.00000, n = 10输出:1024.00000输入:x = 2.10000, n = 3输出:9.26100输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25输入x=2.0,n=10;debug 过程如下:x^2a = 5 res = x^2...
2022-03-26 12:05:42
880
原创 求1+2+…+n java python 算法与数据结构
求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。输入: n = 9输出: 45个人认为这道题通用性太低了,不能用循环,想求这么多数的和一定要使用递归,不能用if判断循环的终止条件,就用短路与&&的短路效应,即&&的前面条件不成立,就会直接终止后面的递归Java 中,为构成语句,需加一个辅助布尔量 xx ,否则会报错;Java 中,开启递归函数需改写为 sumNums
2022-03-26 11:29:28
1334
原创 排序数组中只出现一次的数字 java 算法与数据结构
给定一个只包含整数的有序数组 nums ,每个元素都会出现两次,唯有一个数只会出现一次,请找出这个唯一的数字。输入: nums = [1,1,2,3,3,4,4,8,8]输出: 2思想同二进制求和plus这篇文章,都是使用的位运算;class Solution { public int singleNonDuplicate(int[] nums) { int res = nums[0]; for(int i = 1;i<nums.length;
2022-03-26 11:14:20
742
原创 二进制求和plus java 算法与数据结构
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。输入: a = 1, b = 1输出: 2这道题对比二进制求和 java 算法与数据结构___Wang____的博客-CSDN博客有以下不同的地方:1.这里直接给出了 int 类型,而不是字符串类型;2.不允许使用加减乘除,应该使用位运算来A这道题;位运算求和的基本算法:int sum = a^b;int carry = (a&b)<<1;完整代码如下:..
2022-03-26 10:36:08
833
原创 二进制数转字符串
二进制数转字符串。给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。如果该数字无法精确地用32位以内的二进制表示,则打印“ERROR”。 输入:0.625 输出:"0.101" 输入:0.1 输出:"ERROR" 提示:0.1无法被二进制准确表示...
2022-03-25 15:43:16
2611
原创 格雷编码 java c python 算法与数据结构
n 位格雷码序列 是一个由 2n 个整数组成的序列,其中:每个整数都在范围 [0, 2n - 1] 内(含 0 和 2n - 1)第一个整数是 0一个整数在序列中出现 不超过一次每对 相邻 整数的二进制表示 恰好一位不同 ,且第一个 和 最后一个 整数的二进制表示 恰好一位不同给你一个整数 n ,返回任一有效的 n 位格雷码序列 。输入:n = 2输出:[0,1,3,2]解释:[0,1,3,2] 的二进制表示是 [00,01,11,10] 。- 00 和 01 有一位不同- 01
2022-03-25 15:27:24
1359
原创 二进制中1的个数 java 算法与数据结构
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(汉明重量)。请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。输入必须是长度为32的二进制串。 //按位与的方式去算1的个数 // public int hammingWeight(int n) { // ...
2022-03-25 11:40:13
581
原创 二进制求和 java 算法与数据结构
给你两个二进制字符串,返回它们的和(用二进制表示)。输入为非空字符串且只包含数字1和0。输入: a = "11", b = "1"输出: "100"class Solution { public String addBinary(String a, String b) { int i = a.length() - 1; int j = b.length() - 1; int carry = 0; ...
2022-03-25 11:32:20
1328
原创 边沿检测 Verilog
1.用verilog实现1bit信号边沿检测功能,输出一个周期宽度的脉冲信号定义了一个2位的寄存器变量data_r,data_r[0]用来存储当前的状态,data_r[1]用来存储上一拍的状态每个时钟到来的时候,向左移位,相对于当前时钟的上上拍信号舍弃掉,只保留相对于当前时钟上一拍的状态,存储在data_r的高位上,即data_r[1]表示的是上一拍的状态2.hdlbits中的题 detect an edge;下面代码是用来检测上升沿的,比上面的代码容易理解一些;用的是 ‘&
2022-03-24 22:18:24
2523
原创 二进制,有符号数 10000000是十进制的多少
1.首先我们要知道在计算机数都是以二进制的补码形式存在的2.要知道原码、反码、补码这三个概念正数的原码、反码、补码都一样;负数的原码是本身,反码是符号位不变,其他位按位取反,补码是反码加1;3.回归正题,所以对于有符号数10000000,我们显然知道它是一个负数,我们想把它变成对应的十进制数应该先写出它的原码;负数原码的求法是:符号位不变,其他位减一取反;我们可以得到10000000,所以它的原码看起来是一个-0,我们将它约定成为-128;这也是为什么,8位有符号数,取值范围是-128,
2022-03-24 21:35:12
3642
原创 二叉树的遍历 java 算法与数据结构
二叉树的遍历方式包括深度优先遍历和广度优先遍历其中深度优先遍历包括 前序遍历 中序遍历 后序遍历三种,这三种遍历都可以使用迭代方式和递归方式实现;而广度优先遍历指的就是层序遍历1.前序遍历 即中 左 右1.1迭代/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * Tre.
2022-03-24 20:41:23
129
1
原创 反转字符串II java c python 算法与数据结构
给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。输入:s = "abcdefg", k = 2输出:"bacdfeg"class Solution { public String reverseStr(String s, int k) { char[] ch =
2022-03-24 17:50:11
95
原创 反转字符串 java c 算法与数据结构
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。输入:s = ["h","e","l","l","o"]输出:["o","l","l","e","h"]java实现//因为字符串是引用类型,所以这里不需要返回//字符串在内存空间中已经发生了修改class Solution { public void reverseString(char[] s
2022-03-24 16:37:46
81
原创 反转两次数字 java 算法与数据结构
反转 一个整数意味着倒置它的所有位。例如,反转 2021 得到 1202 。反转 12300 得到 321 ,不保留前导零 。给你一个整数 num ,反转 num 得到 reversed1 ,接着反转 reversed1 得到 reversed2 。如果 reversed2 等于 num ,返回 true ;否则,返回 false 。输入:num = 526输出:true解释:反转 num 得到 625 ,接着反转 625 得到 526 ,等于 num 。java算法1:认真地按照题意做
2022-03-24 15:59:41
153
原创 两数之和 java c python 算法与数据结构
给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。java实现方法1:暴力枚举,可以用两层循环来暴力尝试方法2:定义...
2022-03-24 15:51:33
55
原创 快乐数 java python 算法与数据结构
编写一个算法来判断一个数 n 是不是快乐数。「快乐数」 定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为1,那么这个数就是快乐数。如果 n 是 快乐数 就返回 true ;不是,则返回 false 。输入:n = 19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 = 1java实现.
2022-03-23 22:25:08
62
原创 两个数组的交集
给定两个数组nums1和nums2,返回它们的交集。输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]javaclass Solution { public int[] intersection(int[] nums1, int[] nums2) { if(nums1 == null || nums2 == null){ ret...
2022-03-22 22:23:37
1024
原创 虚拟机 linux centos ubuntu
这些年学习没咋样,虚拟机装了5个,记录一下从上到下第一个是 Ubuntu 16.04,里面有python环境,有扣扣pycharm,之前刷hitbits的时候,正在用虚拟机,顺便就在里面用火狐浏览器刷题了第二个是windows7,里面有上PLC课程时使用的TIA博途软件,应该没啥用了,权当做是个系统留下了第三个是centos,里面有vcs,verdi等软件,比较好用第四个是Ubuntu16.04,这是我自己装的第一个linux环境,当时废了很多功夫,里面也没什么,现在不重要了第五个是
2022-03-22 21:25:40
787
原创 有效的字母异位词 java 算法与数据结构
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。java 实现class Solution { public boolean isAnagram(String s, String t) { //前两次提交分别使用了排序方法和哈希表使用数组的方法 //针对进阶问题,主要是unicode编码中可能含有非常多样的字符,不能再想刚才考虑字母一样定义
2022-03-22 21:16:56
743
原创 冒泡排序 java c python
思想:通过对待排序序列从后向前(从下标较大的元素开始) , 依次比较相邻元素的值, 若发现逆序则交换, 使值较大的元素逐渐从前移向后部, 就象水底下的气泡一样逐渐向上冒。以下三个代码都是将一个数组进行有小到大排序java代码public class Lanqiao1 { public static void main(String[] args) { int[] arr = {1,3,5,232,55,33,6,21,515,233,-2}; for(int i = 0;i<a
2022-03-22 21:09:03
2190
原创 有序数组的平方 java 数据结构与算法
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]Java实现,双指针class Solution { public int[] sortedSquares(int[] nums) { int size = nums.leng
2022-03-22 10:22:44
83
原创 分频器 偶分频 奇分频 任意分频
今天学习了一下分频器及其Verilog实现1.偶分频实现一个NUM_DIV分频的分频器,下面代码中 NUM_DIV= 6,占空比50%设计代码module divider_even( clk, rst_n, clk_div ); input clk; input rst_n; output clk_div; reg clk_div; parameter NUM_DIV = 6;
2022-03-21 16:12:56
1927
原创 特别和的数 java 算法与数据结构
小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。 请问,在 1 到 n 中,所有这样的数的和是多少?【输入格式】输入一行包含两个整数 n。【输出格式】输出一行,包含一个整数,表示满足条件的数的和。【样例输入】 40【样例输出】 574import java.util.Scanner;public class try1 { public...
2022-03-19 16:12:46
589
转载 数的分解 java 算法与数据结构
把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包 含数字 2 和 4,一共有多少种不同的分解方法? 注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和 1001+1000+18 被视为同一种。public class try1 { public static void main(String[] args) { int n = 2019; int num = 0; for (int i = 1; i < n; i++)
2022-03-19 15:32:38
94
原创 基本计算器II java 算法与数据结构
给你一个字符串表达式s,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。输入:s = "3+2*2"输出:7输入:s = " 3/2 "输出:1class Solution { public int calculate(String s) { Stack<Integer> stack = new Stack<Integer>(); int num = 0; char ch = '+..
2022-03-19 11:21:27
96
原创 汉诺塔问题 java 算法与数据结构
在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制:(1) 每次只能移动一个盘子;(2) 盘子只能从柱子顶端滑出移到下一根柱子;(3) 盘子只能叠在比它大的盘子上。请编写程序,用栈将所有盘子从第一根柱子移到最后一根柱子。你需要原地修改栈。class Solution { public void hanota(List<Int
2022-03-19 10:03:45
93
原创 删除链表中的重复元素 java 算法与数据结构
给定一个已排序的链表的头head,删除所有重复的元素,使每个元素只出现一次。返回已排序的链表。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, Li...
2022-03-19 09:51:44
567
原创 剑指offer II 回文列表 java 算法与数据结构
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; }...
2022-03-18 11:35:25
118
原创 反转链表中的一部分 java 数据结构与算法
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; }...
2022-03-18 11:14:56
340
原创 反转链表 java 数据结构与算法
//核心代码模式/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.ne...
2022-03-18 10:36:36
339
原创 hdlbits Design a Moore FSM 设计有限状态机
DesignaMooreFSM一个巨大的水库服务几个用户。为了保持水位足够高,三个传感器以5英寸的间距水平放置。当水位超过最高水位线S3,输入水流速度应该为0。当水位线小于最低水位线S1,流速应该开到最大,标称流量阀和补充流量阀都应该打开。当水位线在高和低传感器之间时,水流速度被以下两个因素影响:1.现在水位线2.水位线前于最后传感器的改变。每一个水位线有一个标称流速,在下表展示。如果传感器变化表明 上一时刻水位线比当前水位线更低,标称流速应该发生。如果前一水位线高于现在水位线,这一流量应该是由补...
2022-02-16 11:48:16
386
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人