FPGA的HDL建模第三周
时间:10-02
整理:3721RD
点击:
【FPGA每周一练】FPGA的HDL建模第三周
小编有话讲:各位用户朋友们,我们的每周一练在@chenchu0910 的付出与大家的支持下,已经迎来了第三周,看到有很多朋友一直在跟着练习,我们都感到很欣慰,希望电子发烧友以后能给大家提供更多的学习机会,也希望大家踊跃发言,我们愿与您携手共进,希望在这里能给您一片自由的学习与交流天地!
上周问题答案如下:
问题1:设计一个10进制计数器;源代码如下:
波形图如下:
问题2:设计3-8译码器。源代码如下:
波形图如下:
以上便是第二周的答案,小伙伴们做对了吗?
本周题目是:用Verilog HDL设计
1、8位循环移位寄存器
2、D触发器(上升沿触发)
下周题目预告:各类触发器
往期回顾: 【FPGA每周一练】FPGA的HDL建模第一练
【FPGA每周一练】FPGA的HDL建模第二周
顺便谁能给个testbench的好教程?谢谢了!
小编有话讲:各位用户朋友们,我们的每周一练在@chenchu0910 的付出与大家的支持下,已经迎来了第三周,看到有很多朋友一直在跟着练习,我们都感到很欣慰,希望电子发烧友以后能给大家提供更多的学习机会,也希望大家踊跃发言,我们愿与您携手共进,希望在这里能给您一片自由的学习与交流天地!
上周问题答案如下:
问题1:设计一个10进制计数器;源代码如下:
- module count(clk,rstn,en,dout);
- input clk,rstn,en;
- output reg [4:0] dout;
- always@(posedge clk or negedge rstn)
- if (!rstn)
- dout<=4'b0000;
- else
- if(en==1'b1)
- begin
- if(dout==4'b1010)
- dout<=4'b0000;
- else
- dout<=dout+1;
- end
- endmodule
波形图如下:
问题2:设计3-8译码器。源代码如下:
- module decode(Ain,en,dout);
- input [2:0] Ain;
- input en;
- output reg [7:0] dout;
- always@(en or Ain)
- if(en==1'b1)
- case(Ain)
- 3'b000: dout <= 8'b11111110;
- 3'b001: dout <= 8'b11111101;
- 3'b010: dout <= 8'b11111011;
- 3'b011: dout <= 8'b11110111;
- 3'b100: dout <= 8'b11101111;
- 3'b101: dout <= 8'b11011111;
- 3'b110: dout <= 8'b10111111;
- 3'b111: dout <= 8'b01111111;
- endcase
- else
- dout<=8'b11111111;
- endmodule
波形图如下:
以上便是第二周的答案,小伙伴们做对了吗?
本周题目是:用Verilog HDL设计
1、8位循环移位寄存器
2、D触发器(上升沿触发)
下周题目预告:各类触发器
往期回顾: 【FPGA每周一练】FPGA的HDL建模第一练
【FPGA每周一练】FPGA的HDL建模第二周
我来写一个8位循环移位寄存器
- module yiweijicun(in,out,clk,rst);
- input [7:0] in;
- input clk,rst,load;
- output out;
- reg out;
- reg [7:0] temp;
- always @(posedge clk)
- begin
- if (!rst)
- out=0;
- else begin
- if(!load)
- temp=in;
- else begin
- out=temp[7];
- temp[7]=temp[6];
- temp[6]=temp[5];
- temp[5]=temp[4];
- temp[4]=temp[3];
- temp[3]=temp[2];
- temp[2]=temp[1];
- temp[1]=temp[0];
- end
- end
- end
看看,学习一下
- //8位移位寄存器
- module shift8bit(
- input wire clk,
- input wire clr,
- input wire datain,
- output reg [7:0]qout
- );
- always @ (posedge clk or posedge clr)
- begin
- if(clr == 1)
- begin
- qout <= 0;
- end
- else
- begin
- qout[7] <= datain;
- qout[6:0] <= qout[7:1];
- end
- end
- endmodule
- //D触发器
- module DFF(
- input wire clk,
- input wire clr,
- input wire d,
- output reg q
- );
- always @ (posedge clk or posedge clr)
- begin
- if(clr == 1)
- begin
- q <= 0;
- end
- else
- begin
- q <= d;
- end
- end
- endmodule
顺便谁能给个testbench的好教程?谢谢了!
学习了。谢谢
小编,你好!我刚接触FPGA,请问要参加你们的每周一练活动,需要安装什么软件呢?Xilinx的13.4版本可以吗?还需要其他的工具吗?
- module shiftreg(clk,rst,D,Dout);
- input D,clk,rst;
- output[7:0] Dout;
- reg[7:0] Dout;
- always @(posedge clk or negedge rst)
- begin
- if(~rst) Dout<=8'b00000000;
- else Dout<={Dout[6:0],D};
- end
- endmodule
哇,这么多FPGA高手啊
输入端没有预置数控制端与预制数,加上输出端没有进位信号,过于简单,没啥实用性。