eda编程9人表决器程序详解://本程序用VERILOG HDL语言实现,描述9人表决器。
module biaojueqi(vote,ledr,ledg,dis_out)
input [8:0] vote
reg [6:0] dis_out
integer i,sum//sum表示赞同的人数
for(i=0i<=8i=i+1)
if(vote[i]) sum<=sum+1
end
always @(sum) //结果由dis_out显示在数码管上
case (sum)
0: dis_out[6:0]<=7'b1111110
1: dis_out[6:0]<=7'b0110000
2: dis_out[6:0]<=7'b1101101
3: dis_out[6:0]<=7'b1111001
4: dis_out[6:0]<=7'b0110011
5: dis_out[6:0]<=7'b1011011
6: dis_out[6:0]<=7'b1011111
7: dis_out[6:0]<=7'b1110000
8: dis_out[6:0]<=7'b1111111
9: dis_out[6:0]<=7'b1111011
endmodule
内容简介
本书从实际应用的角度出发,全面系统地介绍了EDA技术和硬件描述语言VHDL,将VHDL的基础知识、编程技巧、实用方法与实际工程开发技术在EDA软件设计平台上很好地结合起来,使读者能够通过本书的学习迅速了解并掌握EDA技术的基本理论和工程开发实用技术。
LIBRARYIEEEUSEIEEE.STD_LOGIC_1164.ALL
USEIEEE.STD_LOGIC_ARITH.ALL
USEIEEE.STD_LOGIC_UNSIGNED.ALL--库,程序包的使用
ENTITYSRAM IS--实体描述(SRAM为实体名)
GENERIC(WIDTH:INTEGER:=8--类属表(integer是整型,WIDTH为常数名)
DEPTH:INTEGER:=128--类比上一句即可
ADDER:INTEGER:=3)
PORT(DATAIN:IN STD_LOGIC_VECTOR(7 DOWNTO0)--端口说明,IN为端口类型,输入只读
DATAOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--OUT输出,只写
CLOCK:IN STD_LOGIC--STD_LOGIC是数据类型,为标准位单值
WE,RE:IN STD_LOGIC--WE和RE为输入端口,可输入标准位单值
SIGNAL WADD:IN STD_LOGIC_VECTOR(2DOWNTO 0)--标准位位矢量,3个信号元素
SIGNAL RADD:IN STD_LOGIC_VECTOR(2 DOWNTO 0))
ENDENTITY SRAM--结束实体描述
ARCHITECTUREART OF SRAM IS--结构体描述(ART是结构体名)
TYPE MEM IS ARRAY(0 TO 127) OF STD_LOGIC_VECTOR(7 DOWNTO 0)--元素说明
SIGNAL RAMTMP:MEM--TYPE数据类型,SIGNAL信号
BEGIN--下面为功能描述
PROCESS(CLOCK)--进程,CLOCK为敏感信号,敏感信号的变化会激活进程
BEGIN
IF (CLOCK'EVENT AND CLOCK='1') THEN--时钟信号上升沿
IF(WE='1')THEN
RAMTMP(CONV_INTEGER(WADD))<=DATAIN --如果we为1,将DATAIN的值赋给RAMTMP(CONV_INTEGER(WADD))
END IF
END IF
ENDPROCESS
PROCESS(CLOCK)--可类比上一个进程
BEGIN
IF(CLOCK'EVENTAND CLOCK='1')THEN
IF (RE='1') THEN
DATAOUT<=RAMTMP(CONV_INTEGER(RADD))
END IF
ENDIF
ENDPROCESS
ENDARCHITECTURE ART
Comepare意思是对比,你这个module名字是 Compare8,意思就是将8位数对比大小,看输入输出,a,b为输入,larger,equal,less为输出。module Compare8(a,b, larger,equal,less)// module声明 对比8位数的模块(module) 有a,b, larger,equal,less 5个端口(port)
//定义常量变量
parameter size=8 // parameter定义的是常量,这里定义了常量size,值是8
input[size-1:0] a,b// 定义输入变量a和b,没有写变量类型,默认为wire型,变量位宽为size即8
output larger,equal,less// 定义输出端口为 larger,equal,less
wire larger,equal,less // 定义变量larger,equal,less 类型为wire型,位宽为1
// assign为连续赋值语句
assign larger=(a>b)// 将逻辑运算 a>b 的值赋给larger,判断a是否大于b。如果a>b,则larger为1;如果a≤b,则larger为0
assign equal=(a==b)// 将逻辑运算 a==b 的值赋给equal,判断a是否等于b。如果a=b,则larger为1;如果a≠b,则larger为0
assign less=(a<b) // 将逻辑运算 a<b 的值赋给less,判断a是否小于b。即如果a<b,则larger为1;如果a≥b,则larger为0
endmodule // module结束 与 module Compare8 对应
有问题继续追问,望采纳。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)