- 1、本文档共73页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《基于QuartusII的FPGACPLD数字系统设计与应用》范例的源程序讲述
2-28
module adder_4(cout,sum,ina,inb,cin,clk);
output[3:0] sum;
output cout;
input[3:0] I na,inb; //tempa,tempb中间变量声明
input cin,clk;
reg[3:0] tempa,tempb,sum;
reg cout;
reg tempc; //tempc中间变量声明
always @(posedge clk) //always clk上升沿触发
begin //阻塞语句
tempa=ina;
tempb=inb;
tempc=cin;
end
always @(posedge clk) //always clk上升沿触发
begin
{cout,sum}=tempa+tempb+tempc;
end
endmodule
2-40
`timescale 1ns/10ps
module adder4_testbench;
reg [3:0] ina,inb;
reg cin;
reg clk=0;
wire [3:0] sum;
wire cout;
always #10 clk=~clk;
initial
begin
ina=0;
repeat(20)
#20 ina =$random; //随机数ina产生
end
initial
begin
inb=0;
repeat(10)
#40 inb =$random; //随机数inb产生
end
initial
begin
cin=0;
repeat(2)
#200
cin ={$random}%16;// 随机数inc产生
#200 $stop;
end
adder4 adder4_te(
.clk (clk ),
.sum ( sum ),
.cout ( cout),
.ina ( ina ),
.inb ( inb ),
.cin ( cin )
);
initial
endmodule
2-73
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY SEG_7 IS
PORT (SEG: IN STD_LOGIC_VECTOR(3 DOWNTO 0 ); //--四位二进制码输入
Q3: OUT STD_LOGIC_VECTOR(6 DOWNTO 0) );//--输出LED七段码
END SEG_7;
ARCHITECTURE ART OF SEG_7 IS
BEGIN
PROCESS(SEG)
BEGIN
CASE SEG IS
WHEN 0000 = Q3=0000001;--0
WHEN 0001 = Q3=1001111;--1
WHEN 0010 = Q3=0010010;--2
WHEN 0011 = Q3=0000110;--3
WHEN 0100 = Q3=1001100 ; --4
WHEN 0101 = Q3=0100100;--5
WHEN 0110 = Q3=0100000;--6
WHEN 0111 = Q3=0001111;--7
WHEN 1000 = Q3=0000000;--8
WHEN 1001 = Q3=0000100;--9
WHEN OTHERS = Q3=1111111;
END CASE;
END PROCESS;
END ART;
3-1
`timescale 1ns/1ns
module Decoder2x4(A,B,EN,Z) ;
input A,B,EN;
output [0:3] Z;
wire Abar, Bbar;
assign #1 Abar=~A; // 语句1
assign #1 Bbar=~B; // 语句2
assign #2 Z[0]=~(Abar
文档评论(0)