第一个是个D触发器,不对的原因我觉得是主要的语句没写到process里面去,毕竟那个是通过敏感变量clk控制输出的。
第二个名字写的很清楚,就是个锁存器;不对的原因应该跟上面的差不多。
第三个我觉得挺奇怪的,wait语句我一般都是在testbench里才用,这一边名叫test,一边又写的像D触发器……我弄testbench的话都是直接用软件生成前面的一大截,原理是用component语句调用历悔要仿真的模块。
第四个是个二选一;我手边没有软件不好下定论。问题的话,比较明显的事case没有default,这个只是个warning不过一般还是加上好;而不对的地方我觉得就是这个case可能应该放在process外,原因我说不上来~~~不好意思哈
第五个也是二选一;q<=d1 when sel = ’0’ else d2这个语句要放在process外。原因我也说不清。。。
第六个是一个16进制计数器。可以考虑把count改成out类型(话说一般不推荐用buffer的)然后加陆睁一个signal给count赋值(就是在process里只 *** 作加的signal而不 *** 作count)。不过要真说他是16进制计数器的话又少了进位、复位信号之类的,总之感觉怪怪的,就那么不停的累加循环。
其实真要看语法错误的话最好的就是拿到软件里综合一下;要看功能对不对就用软件仿真一下肢悉正,总之比在这里纯靠想要靠谱的多。
高电平衡游锁存的n位锁存器
ENTITY my_latch IS
GENERIC(n:Positive := 8)
PORT (eg:IN Bit
拍粗 d:IN Bit_Vector(n-1 DOWNTO 0)
q:OUT Bit_Vector(n-1 DOWNTO 0))
END my_latch
ARCHITECTURE latch_eg OF my_latch IS
BEGIN
PROCESS(eg,d)
BEGIN
IF eg='1' THEN
咐贺销 q <= d
END IF
END PROCESS
END latch_eg
对于VHDL编盯派让程来说,你不需要太多的考虑是用寄存器还是锁存器凯局,一般编译环境会根据你的程序代码自动生成这些基础单元。一般在某一个信号被赋值后羡握需要再次被读取的话都会生成锁存器的。就像out类型和buffer类型的端口那样。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)