verilog
Kanble_X
这个作者很懒,什么都没留下…
展开
-
用Verilog实现串并转换
数字IC设计——用Verilog实现串并转换一、串转并转换模块1、利用移位寄存器串行转并行数据输出:采用位拼接技术(移位寄存器),将串行的数据总数先表示出来,然后发送一位数据加一,后面的接收的这样标志:data_o <= {data_o[6:0],data_i };1输入8输出 的 串转并模块的Verilog代码module serial_parallel( input clk, input rst_n,en, input转载 2021-06-08 16:24:06 · 13239 阅读 · 2 评论 -
设计一个状态机,A饮料10分钱,B饮料5分钱,投币分5分钱和10分钱,考虑找零。
//设计一个自动饮料售卖机,共有两种饮料,其中饮料 A 每个 10 分钱,饮料 B 每个 5 分钱//硬币有 5 分和 10 分两种,并考虑找零。//要求用状态机实现,定义状态,画出状态转移图,并用 Verilog 完整描述该识别模块。//sel为1.表示选择饮料A,sel为0,表示选择饮料B。//输入2’b01–表示5分钱,2’b10–表示10分钱。//d_in表示投入钱的数量,d_out高表示输出饮料,d_c表示找零。module sel_fsm (clk,rst,sel,din,dout,转载 2021-05-15 20:04:24 · 1547 阅读 · 2 评论 -
Verilog相关知识小结
Verilog相关知识1、总结verilog产生随机数的$random和seed:http://blog.sina.com.cn/s/blog_679686370102woyz.html2、两种跨时钟域的信号的同步方法:http://blog.sina.com.cn/s/blog_679686370102wn5f.html新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全转载 2021-04-16 20:37:37 · 151 阅读 · 0 评论 -
时钟分频verilog-偶分频,奇分频
1、偶分频偶分频是时钟模块设计较为简单。分频系数M和计数器值N。M = 时钟输入频率 / 时钟输出频率N = M / 2如输入时钟为50M,输出时钟为25M,则M=2,N=1。偶分频则意味着M为偶数。只需要将counter以clk_in为时钟驱动计数,当counter = (N-1)时,clk_out翻转即可。Verilog代码module time_adv_even(clk,rst,clk_out); parameter N=2,WIDTH=7; input clk,rst; outp原创 2021-05-11 19:21:49 · 1087 阅读 · 0 评论 -
SPI接口控制器-简化的SPI接收机
简化的SPI接收机,用来完成8bit的数据传输。sclk为时钟接口;srst为清零信号,低电平有效;sen为接口使能信号,高电平有效;ss_n为片选信号,选择从设备,高电平有效。当电路上电时,首先将清零信号置位有效,初始化电路,当sen使能信号有效后,开始传输数据,由于传输数据为8bit,因此sen使能信号应该至少保持8个时钟周期。当8bit数据全部输入后,片选信号ss_n有效,选择从设备,将数据整体输出。片选信号ss_n由3bit计数器产生,当计数器计数到111状态时,ss_n=1,其他状态ss_n为原创 2021-04-28 10:26:02 · 699 阅读 · 0 评论 -
UART接口控制器-RS-232的9脚接口
RS-232常见引脚信号的定义RXD-接收数据,TXD-发送数据,DTR-数据终端准备,GND-信号地,DSR-数据设备准备好,RTS-请求发送,CTS-清除发送。串口也称为UART。在实际应用中,通常只用TXD和RXD两个引脚,而其它的引脚都不使用。UART接口时序图在没有数据的情况下接口处于高电平(Mark),在数据发生前先将电平置低(space)一个周期,在该周期称为起始比特(Start bit),之后开始发送第0个到最后一个比特数据。UART接口每次可以发送6位或者7位,或8位数据。在数据位原创 2021-04-26 11:57:41 · 1178 阅读 · 0 评论 -
深度为8,位宽为8 bit的ROM
module rom(clk,addm,cs_n,dout); input clk,cs_n; input [2:0] addm; output [7:0] dout; reg [7:0] dout; reg [7:0] rom [7:0]; initial begin rom[0] = 8'b0000_0000; rom[1] = 8'b0000_0001; rom[2] = 8'b0000_0010; rom[3] = 8'b0000_0011; rom[4] =原创 2021-04-24 21:09:30 · 1303 阅读 · 0 评论 -
深度为8,位宽为8bit的双端口RAM
双端口RAM具有两套地址总线,一套用于读数据,另一套用于写数据,两者可以分别进行操作。module ram_dual(clk1,clk2,q,addr_in,addr_out,d,we,rd); input clk1,clk2,we,rd; input [2:0] addr_in,addr_out; input [7:0] d; output [7:0] q; reg [7:0] q; reg [7:0] mem [7:0]; always @ (posedge clk1) begi原创 2021-04-24 19:56:27 · 1089 阅读 · 0 评论 -
深度为8,位宽为8bit的单端口RAM
单端口RAM只有一套地址总线,读操作和写操作是分开的。module one_bit_fulladder(clk,addm,cs_n,we_n,din,dout); input clk,cs_n,we_n; input [2:0] addm; input [7:0] din; output [7:0] dout; reg [7:0] dout; reg [7:0] raml [7:0]; always @ (posedge clk) begin if(cs_n) dout原创 2021-04-24 19:25:12 · 738 阅读 · 0 评论 -
序列信号发生器-移位寄存器构成
电路工作频率高,缺点:移位寄存器长度取决于序列长度,电路占用面积大module signal_maker(clk,reset,dout,load,din,d); parameter width = 4; input clk,reset,load; input [width-1:0] din; output [width-1:0] dout; output d; reg [width-1:0] dout; always @ (posedge clk) if(reset) dout原创 2021-04-22 20:51:18 · 1391 阅读 · 0 评论