IC基础
__Wang____
这个作者很懒,什么都没留下…
展开
-
verilog 手撕代码记录
1.简易式同步fifo,3个always块搞定。2.异步fifo常见问题3.倍频器4.分频器5.边沿检测器6.序列检测器7.贩卖机原创 2022-10-03 20:55:33 · 759 阅读 · 1 评论 -
4.25常见问题
gvim的基本操作终端中gvim+对应的Mikefile文件即可打开Mikefile文件使用的时候有三种模型,一般模式,插入模式,命令行模型一般模式:以vi打开一个文件就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用上下左右按键来移动光标,你可以使用删除字符或删除整行来处理文件内容, 也可以使用复制、粘贴来处理你的文件数据。编辑模式:在一般模式中可以进行删除、复制、粘贴等的操作,但是却无法编辑文件的内容,只有当到你按下【i, I, o, O, a, A, r, R】原创 2022-04-25 20:17:23 · 533 阅读 · 0 评论 -
从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 · 790 阅读 · 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 · 1261 阅读 · 0 评论 -
带进位输入、输出的两位全加器
先写一位全加器,然后再写个顶层模块,调用两个一位全加器,其中第一个加法器的cout作为第二个加法器的cinS = a^b^cin;Cout = a&b|a&cin|b&cin;原创 2022-04-12 11:54:38 · 2865 阅读 · 0 评论 -
序列信号发生器
序列信号发生器,在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 · 778 阅读 · 0 评论 -
“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 · 1046 阅读 · 0 评论 -
边沿检测 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 · 2443 阅读 · 0 评论 -
二进制,有符号数 10000000是十进制的多少
1.首先我们要知道在计算机数都是以二进制的补码形式存在的2.要知道原码、反码、补码这三个概念正数的原码、反码、补码都一样;负数的原码是本身,反码是符号位不变,其他位按位取反,补码是反码加1;3.回归正题,所以对于有符号数10000000,我们显然知道它是一个负数,我们想把它变成对应的十进制数应该先写出它的原码;负数原码的求法是:符号位不变,其他位减一取反;我们可以得到10000000,所以它的原码看起来是一个-0,我们将它约定成为-128;这也是为什么,8位有符号数,取值范围是-128,原创 2022-03-24 21:35:12 · 3349 阅读 · 0 评论 -
虚拟机 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 · 772 阅读 · 0 评论 -
分频器 偶分频 奇分频 任意分频
今天学习了一下分频器及其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 · 1861 阅读 · 0 评论