- 博客(16)
- 收藏
- 关注
原创 OV7060 (1) - 按键检测模块
四位按键检测模块, 25Mhz对应时钟周期40ns按下>20ms才有效, key_in低有效设计数器,计500_000.1位按键按下>=20ms标志位flag,由end_cnt拉高,无按键按下则拉低。`timescale 1ns / 1ns//////////////////////////////////////////////////////////////////////4个按键消抖//25Mhz 对应40nsmodule OV7670_KEY(clk,rst_n,key_
2021-08-31 11:26:50
490
原创 对FIFO IP的仿真(12)
`timescale 1ns / 1ns/////////////////////////////////////////////////////////////////////////////////fifo是一种存储器,一般做数据缓冲//fifo和ram的不同之处:fifo没有地址,不能任意指定读取某一个数据,数据只能先入先出module V_FIFO(sys_clk_n,sys_clk_p,rst_n);//本次实验只做仿真来验证FIFO的功能input sys_clk_n;//input
2021-08-28 17:19:17
362
原创 虚拟机下使用vcs和verdi
首先检查是否安装成功open in Terminal输入vcsopen in Terminal输入verdi在桌面上新建文件夹myv,open in Terminal输入gvim b1.v,写代码,保存成b1.v。同样的写好testbench文件。vcs -R -full64 +v2k -fsdb +define+FSDB cnt.v tb_cnt.v time.v -l run.log报错Undefined env variables Environment variables NO
2021-08-22 22:18:06
3564
2
原创 DDS信号发生器
基于verilog及DA9709的DDS设计DDS(Direct Digtal Synthesizer) 直接数字合成器相位累加器、LUT、DACtop.v, dds_ctrl.v, dds_wave.v, DA.v。dds_ctrl.v:三个计数器assign add_cnt0=1;assign end_cnt0= (add_cnt0)&&(cnt0==cfg_time-1);assign add_cnt1=end_cnt0;assign end_cnt1= (add_
2021-08-21 15:02:49
559
原创 verilog乘法器
设计32bit*32bit的乘法器input clk,rst_n,x1,x2,mult_beginoutput product,mult_end先求有符号位x1,x2的补码,分别记为x1_abs,x2_absassign x1_sign=x1[31];x1_abs=x1_sign? (~x1+1) :x1;乘法加载x1,mult_vld期间,x1每T左移1位if (rst_n)begin y1<=64'b0;endelse if (mult_vld) begin y1<
2021-08-14 12:50:10
899
原创 阻塞vs非阻塞
= , <=module zuse(clk,a1,c1,a2,c2);input clk;input a1;input a2;output c1;output c2;reg b1;reg b2;reg c1;reg c2;always @ (posedge clk) begin b1=a1; c1=b1;endalways @ (posedge clk) begin b2<=a2; c2<=b2;endendmodule结果
2021-08-13 16:16:33
96
原创 2021-08-13
verilog输出有规律的数0,8,2,10,4,12,6,14; 1,9,3,11,5,13,7,1516,32,48,64,设计计数器cnt0 计2cnt1 计4cnt2 计2cnt3 计5addr=cnt08+cnt12+cnt2+cnt3*16;module addr_gen(clk,rst_n,addr);input clk;input rst_n;output addr;reg [6:0] addr;reg cnt0; wire add_cnt0; w
2021-08-13 13:20:33
111
原创 按键消抖verilog
按键消抖module anjian_debounce(clk,rst_n,ey_in,key_vld);input clk;input rst_n;input key_in;out put key_vld;reg [20:0] cnt;wire add_cnt;wire add_cnt;reg flag;reg key_in_dd;always @
2021-08-09 17:18:32
212
原创 SDRAM接口练习5
SDRAM接口练习5——完善接口功能优化 读写优化级,具体情况如下:a) 如果同时出现读、写请求时,如果上次执行了读操作,则此时执行写操作;如果上次执行了写操作,则此时执行读操作。b) 如果没有同时出现读写请求,则有什么请求就执行什么操作。另一种刷新方式初始化完成后,每隔【1562-256(突发长度)-3(激活时间)-3(预充电时间)】=1300时进行刷新。如果时间到了时处于 IDLE 状态,则立刻进行自动刷新;如果处于读写状态,则等待变到 IDLE 状态后,再执行自动刷新。√
2021-08-06 13:45:15
244
原创 SDRAM接口练习4
SDRAM接口练习4`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company: // Engineer: // // Create Date: 2021/08/03 09:39:06// Design Name: // Module Name: work_4// Project Name: // Target Device
2021-08-03 22:51:12
108
原创 SDRAM接口练习3
SDRAM接口练习3添加读操作-全页读模式module work_3(clk,rst_n,wr_req,waddr,wdata,wr_ack,rd_req,rd_ack,rdata,rdata_vld,cke,cs,ras,cas,we,dqm,addr,bank,dq);input clk;input rst_n;input wr_req;input [21:0] waddr;// without [21:0], bank<=waddr[21:20] errorinput [15:0]
2021-08-03 09:59:07
108
原创 SDRAM接口练习2
SDRAM接口练习2在SDRAM接口练习1的基础上,补充写状态。当初始化完成后,处于IDLE状态,此时如果输入接口wr_req为1,则表示需要进行写操作。写模式为全页模式,该模式在写完成时,给出预充电命令结束。P52...
2021-08-02 21:57:18
91
原创 SDRAM接口练习1
SDRAM接口练习1verilog代码module sdram_work_1 (clk,rst_n,cke,cs,ras,cas,we,dqm,addr,bank,dq);input clk;input rst_n;output cke;output cs;output ras;output cas;output we;output dqm;output addr;output bank;output dq;parameter T=10;parameter T_NOP=1000
2021-07-31 11:31:17
132
原创 verilog设计饮料机
基于Verilog,设计一个自动售卖饮料机。2.5元/瓶,可投1元硬币和5角硬币,可找零。设计思路:基于有限状态机。引入5个状态:IDLE,S1,S2,S3,S4;分别代表空闲状态,已投币0.5元,已投币1.0元,已投币1.5元,已投币2.0元。verilog代码:module vendor(clk, rst_n, half_in, one_in, collect, half_out);input clk;input rst_n;input half_in;input one_in;ou
2021-07-25 20:51:35
2422
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人