
嵌入式学习
一起拼,一起加油
一起学好FPGA
展开
-
流水线之3个乘法器实现S=a*b*c*d
//流水线之3个乘法器实现S=abc*dmodule cy4(input[3:0] a,b,c,d, input vld_in,//输入有效指示信号 input clk,rst_n, output reg[15:0] dout, output reg vld_out//输出有效指示信号 );reg vld_in_ff0;//中间缓...原创 2018-09-29 22:07:44 · 1084 阅读 · 0 评论 -
一位数值比较器
//数值比较器 module cy4(input A,B, output reg F1,F2,F3 //F1代表F(A=B),F2代表F(A原创 2018-09-11 08:54:08 · 8159 阅读 · 0 评论 -
描述一个具有使能输入端的3-8线译码器的行为(利用for循环)
module cy4(input[2:0] A,//输入端口声明 input En,//输入端口声明 output reg[7:0]Y//输出端口及变量的数据类型声明 ); integer k;//声明一个整型变量k always @(A, En) begin Y = 8’b1111_1111;//设置译码器输出的默...原创 2018-09-11 08:13:58 · 3553 阅读 · 1 评论 -
五个连续二进制编码状态的异步计数器(结构描述法)
module toggle(input T, input clk, output reg Q );always @(posedge clk ) if(T == 1) Q <= ~Q; else Q <= Q;endmodulemodule cy4(input CLK, ...原创 2018-09-18 21:16:47 · 734 阅读 · 0 评论 -
异步二进制递减计数器(结构描述方法)
//D触发器的声明module D_FF(input CLK,D,CR, output reg Q );always @(negedge CLK or negedge CR)if(!CR) Q &amp;lt;= 1'b0;else Q &amp;lt;= D;endmodule//调用D触发器的模块module cy4(input CP,RST, ...原创 2018-09-18 15:41:54 · 3089 阅读 · 0 评论 -
3-8线译码器
//3-8线译码器 module cy4(input[2:0] E,//输入端口声明 input[2:0] A,//输入端口声明 output reg[7:0]Y//输出端口声明 ); always @(A,E) if(E == 3’b111) begin case(A) 3’b000: ...原创 2018-09-07 16:57:28 · 10099 阅读 · 3 评论 -
产生宽度随机脉冲序列的测试信号源
`timescale 1 ns/ 1 psmodule cy4_vlg_tst(dout);output[9:0] dout;reg [9:0] dout;integer delay1,delay2,k; initial begin #10 dout = 0; for(k=0;k<100;k=k+1) begin ...原创 2018-09-13 09:55:45 · 462 阅读 · 0 评论 -
8-3线优先编码器
//8-3线优先编码器 module cy4(input[7:0] I, input EI,//输入端口声明 output reg[2:0] Y,//输入端口声明 output reg GS,//输出端口及变量的数据类型声明 output reg EO//输出端口及变量的数据类型声明 ...翻译 2018-09-07 15:22:21 · 22247 阅读 · 1 评论 -
casez与casex语句
casez与casex语句可用来处理比较过程中不必考虑的情况。其中casez语句用来处理不必考虑高阻值z的比较过程,casex语句则将高阻值z和不定值都视为不必关心的情况,即在表达式进行比较时,不将该位的状态考虑在内。这样,在case语句表达式进行比较时,就可以灵活的设置对信号的某些位进行比较。...原创 2018-09-07 15:01:10 · 1101 阅读 · 0 评论 -
1-4线数据分配器
module cy4(input E,In, input S0,S1, output reg Y3,Y2,Y1,Y0 ); always @(*) if(E == 0) {Y3,Y2,Y1,Y0} = 4’bzzzz; else begin case({S1, S0}) 2’b00: begin ...原创 2018-09-10 20:14:34 · 12158 阅读 · 0 评论 -
两位数值比较器
module cy4(input A1,B1,A0,B0, output reg F1,F2,F3 ); always @(*) if(A1>B1) begin F1 = 1; F2 = 0; F3 = 0; end else if(A1==B1) begin if(A0>B0) begin F...原创 2018-09-11 10:30:13 · 4719 阅读 · 0 评论 -
4位双向移位寄存器(行为描述)
module cy4(input S1,S0,//选择输入端口声明 input DSR,DSL,//串行数据输入 input CP,CR,//时钟和清零输入 input[3:0] D,//并行数据输入 output reg[3:0]Q//输出端口及变量的数据类型声明 );always @(posedge CP or neg...原创 2018-09-19 19:42:19 · 9977 阅读 · 1 评论 -
带使能端和同步指数的端的通用可逆计数器
//可逆计数器module cy4(input PE,Up_down,En,CP, input[3:0] D, output reg[3:0] Q );integer direction;//设置计数方向always @(posedge CP)begin if(Up_down) direction <= 1;//实现递增计数 else...原创 2018-09-26 09:41:59 · 1389 阅读 · 2 评论 -
四位流水线乘法器(用加法器替代乘法器)
module cy4( clk , rst_n , vld_in ,//输入有效指示信号 x , y , p ,//乘积结果 vld_out //输出有效指示信号 );...翻译 2018-09-29 20:41:33 · 4667 阅读 · 0 评论 -
I^2C总线简介
总共有五种工作状态:A:总线非忙状态该状态时数据线(SDA)和时钟线(SCL)都保持高电平。B:启动状态当时钟线(SCL)为高电平状态时,数据线(SDA)由高电平变为低电平的下降沿被认为是"启动"信号。C:停止状态当时钟线(SCL)为高电平状态时,数据线(SDA)由低电平变为高电平的下降沿被认为是"停止"信号。D:数据有效状态在出现"启动"信号后,在时钟线(SCL)为高电平状态时,...原创 2018-10-07 20:44:30 · 4588 阅读 · 0 评论 -
序列检测器(检测"10010序列")
IDLE为初始状态,A代表第一个状态"1",B代表第二个状态"10",C代表第三个状态"100",D代表第四个状态"1001",E代表要输出的状态"10010",G和F代表多余的状态分别为"1000"和"10001"。module cy4( clk,rst_b,In,Y);input clk,rst_b,In;output Y;reg[2:0]current_原创 2018-10-06 09:25:30 · 30358 阅读 · 7 评论 -
LFSR(线性反馈移位寄存器)
线性反馈移位寄存器是指给定前一状态的输出,将该输出的线性函数再用作输入的移位寄存器。异或运算是最常见的但比特线性函数,对寄存器的某些位进行异或操作后作为输入,再对寄存器中各比特位进行整体移位。module cy4(q3,clk,pre_n);input clk,pre_n;output reg q3;reg q2,q1;always @(posedge clk or negedge p...原创 2018-10-05 19:58:21 · 27048 阅读 · 0 评论 -
检测连续输入序列110的状态图
//检测连续输入序列110的状态图module cy4(input A,CP,CR,//输入端口声明 output reg Y//输出端口及变量的数据类型声明 );reg[1:0] current_state,next_state;//中间变量声明parameter S0 = 2'b00,S1 = 2'b01,S2 = 2'b10,S3 = 2'b11;//定...原创 2018-09-27 16:10:57 · 4973 阅读 · 0 评论 -
Verilog模块编程要点
(1)时序电路建模时,用非阻塞赋值。(2)锁存器电路建模时,用非阻塞赋值。(3)用always块建立组合逻辑模型时,用阻塞赋值。(4)在同一个always块中建立时序和组合逻辑电路时,用阻塞赋值。(5)在同一个always块中不要既用非阻塞赋值又用阻塞赋值(6)不要在一个以上的always中为同一个变量赋值(7)用$strobe系统任务来显示用非阻塞赋值的变量值(8)在赋值时不要使用...转载 2018-10-04 19:52:54 · 390 阅读 · 0 评论 -
浅谈阻塞与非阻塞
阻塞赋值符号" = ",非阻塞赋值符号List item" = ".阻塞赋值时先计算等号右手方向(RHS)的值,这时候赋值语句不允许任何别的Verilog语句干扰,直到现行的赋值完成时刻,RHS赋给LHS(等号左手方向),它才允许别的赋值语句执行。List item" <= ".在赋值时刻开始时计算非阻塞赋值的RHS表达式,赋值操作结束时刻才更新LHS。而在计算RHS和更...原创 2018-10-04 15:51:26 · 267 阅读 · 0 评论 -
级联BCD计数器设计与仿真(模10)
//级联BCD计数器设计与仿真module cy4(Cin,CLK,Rst_n,Cout,q);input Cin;//计数基准时钟input CLK;//计数器进位输入input Rst_n;//系统复位output q;//技术值输出output Cout;//计数器进位输出wire Cout0,Cout1;wire[3:0]q0,q1,q2;wire[11:0] q;as...原创 2018-10-11 14:55:33 · 1039 阅读 · 0 评论 -
流水线之1个乘法器实现S=a*b*c*d(指两个寄存器之间只有一个乘法器)
module cy4(input[3:0] a,b,c,d, input vld_in,//输入有效指示信号 input clk,rst_n, output reg[15:0] dout, output reg[7:0] s1, output reg[7:0] s2, output reg vld_out//输出有效指示信号...原创 2018-10-01 17:10:21 · 675 阅读 · 0 评论 -
共阴极的七段显示译码器的代码
module cy4(input LE,BL,LT,//输入端口声明 input D3,D2,D1,D0,//输入端口声明 output reg a,b,c,d,e,f,g//输出端口及变量的数据类型声明 ); always @(*) begin if(LT == 1) {a,b,c,d,e,f,g} = 7’b11...原创 2018-09-10 19:42:38 · 9954 阅读 · 0 评论 -
8421BCD码编码器代码
module cy4(input[9:0] S, output reg Q ); always @(1) begin case(S) 10’b1111_1111_11: Q &amp;lt;= 4’b0000; 10’b1111_1111_10: Q &amp;lt;= 4’b0000; 10’b1111_1111_01: Q &amp;lt;= ...原创 2018-09-07 09:32:31 · 6937 阅读 · 0 评论 -
8421BCD计数器
module cy4(input D3,D2,D1,D0, input clk,reset, output reg Q3,Q2,Q1,Q0 );always @(posedge clk or negedge reset)if(!reset) {Q3,Q2,Q1,Q0} <= 4'b0000;else if({D3,D...原创 2018-09-17 11:51:39 · 4760 阅读 · 0 评论 -
全加器(行为描述)
//半加器module cy4(input A,B,Ci, output reg Co,S); always @(*)begincase({A,B,Ci})3'b000: begin S = 0;Co = 0;end3'b001: begin S = 1;Co = 0;end3'b010: begin S = 1;Co = 0;end3'b011: begin...原创 2018-09-11 17:38:31 · 2610 阅读 · 0 评论 -
半加器(行为描述)
//半加器module cy4(input A,B, output reg C,S); always @(*)begin case({A,B})2'b00: begin C = 0;S = 0;end2'b01: begin C = 0;S = 1;end2'b10: begin C = 0;S = 1;end2'b11: begin C = 1;S = 0;...原创 2018-09-11 17:03:24 · 2326 阅读 · 0 评论 -
四选一多路选择器
module cy4(out,i0,i1,i2,i3,s1,s0); output out; input i0,i1,i2,i3; input s1,s0;reg out;always @(s1 or s0 or i0 or i1 or i2 or i3) begin case({s1,s0}) 2’b00: out = i0; 2’b01: ou...原创 2018-09-05 11:45:39 · 14956 阅读 · 0 评论 -
两位数值比较器
//两位数值比较器,F1,F2,F3分别代表F(A>B),F(A<B),F(A=B)module cy4(input A1,B1,A0,B0, output reg F1,F2,F3 );always @(*)if(A1>B1)begin F1 = 1; F2 = 0; F3 = 0;endelse if(A1==...原创 2018-09-11 12:06:10 · 5327 阅读 · 0 评论 -
异步输入上升沿检测
module cy4( input sig_a, input clk, input rstb, output sig_a_posedge ); reg sig_a_d1,sig_a_d2,sig_a_d3; always @(posedge clk or negedge rstb) if(!rstb) ...原创 2018-09-02 15:55:14 · 860 阅读 · 0 评论 -
同步上升/下降沿检测
module cy4( input sig_a, input clk, input rstb, output sig_a_anyedge ); reg sig_a_d1; always @(posedge clk or negedge rstb) if(!rstb) sig_a_d1 &lt;= 1’b0; ...原创 2018-09-01 20:38:06 · 365 阅读 · 0 评论 -
同步下降沿检测
module cy4( input sig_a, input clk, input rstb, output sig_a_faledge ); reg sig_a_d1; always @(posedge clk or negedge rstb) if(!rstb) sig_a_d1 &lt;= 1’b0; ...原创 2018-09-01 17:55:51 · 793 阅读 · 0 评论 -
Verilog语法(不可综合)
1.只有寄存器类型变量才能在initial内部被赋值。 2.verilog系统任务 (1):finish/finish/finish/stop finish:如果遇到finish:如果遇到finish:如果遇到finish,仿真器完成仿真并退出。 stop:当遇到stop:当遇到stop:当遇到stop,仿真器停止仿真,但不退出,同时提供一个命令提示符,在命令提...原创 2018-08-29 16:49:59 · 3553 阅读 · 0 评论 -
边沿检测电路及代码
//边沿检测 module cy4( input signal, input clk, input rst_n, output nege_dge, output pose_dge ); reg reg_0,reg_1,reg_2; always @(posedge clk or negedge rst_n) if(!rst_n) beg...原创 2018-08-30 20:56:29 · 1025 阅读 · 0 评论 -
JK触发器
module cy4(input J, input K, input clk, input rst_n, output reg Q ); always @(posedge clk or negedge rst_n) if(!rst_n) Q &amp;lt;= 1’b0; els...原创 2018-09-03 09:05:51 · 13087 阅读 · 1 评论 -
T触发器
module cy4(input T, input clk, input rst_n, output reg Q ); always @(posedge clk or negedge rst_n) if(!rst_n) Q &lt;= 1’b0; else if(T == 1) Q &lt;= ...原创 2018-09-03 09:49:05 · 4867 阅读 · 0 评论 -
SR触发器
module cy4(input S, input R, input clk, input rst_n, output reg Q ); always @(posedge clk or negedge rst_n) if(!rst_n) Q &lt;= 1’b0; els...原创 2018-09-03 11:06:28 · 2260 阅读 · 0 评论 -
4位全加器结构化描述
//一位半加器的描述module halfadder(input A,B, output S,C );xor(S,A,B);and(C,A,B);endmodule//一位全加器的描述module fulladder(input A,B,Ci, output Sum,Co ...原创 2018-09-12 20:17:59 · 2685 阅读 · 0 评论 -
全加器(结构化描述)
//一位半加器的描述module halfadder(input A,B, output S,C );xor(S,A,B);and(C,A,B);endmodule//一位全加器结构化的描述module cy4(input A,B,Ci, output Sum,Co ...原创 2018-09-12 19:03:10 · 2095 阅读 · 0 评论 -
半加器(结构化描述)
//一位半加器的结构化描述module halfadder(input A,B, output S,C );xor(S,A,B);and(C,A,B);endmodule原创 2018-09-12 19:01:14 · 1652 阅读 · 0 评论