Ahmad Abdulghany posted on 6 Mar 2007 10:41:13 -0800:
"I want to make the VHDL code for a simple block that simply map every
di-bit input to four-bit output, as follows:
00 >>> 01 01
01 >>> 01 11
11 >>> 11 11
10 >>> 11 01
I did it concurrently in this block architecture simply as follows:
out_s(0) <= '1';
out_s(2) <= '1';
out_s(1) <= in_s(0);
out_s(3) <= in_s(1);
Will this be done every clock edge of that block clock?? Notice that i
didn't put it inside process..
[..]"
A real implementation is not likely to support activation on every
clock edge (either every rising clock edge or every falling clock edge
would be supported).
You have not shown us a clock and it is unclear to me whether you have
really used the BLOCK keyword (as in 9.1 Block statement in the VHDL
Language Reference Manual (LRM)) and did not show it in your excerpt or
whether you have just those four statements as concurrent signal
assignment statements (as in 9.5 Concurrent signal assignment
statements in the LRM) (without the BLOCK keyword).
If you did not use the BLOCK reserved word, then these concurrent
signal assignment statements are definitely unclocked. From 9.5 in the
LRM:
"[..]
For any concurrent signal assignment statement, there is an equivalent
process statement with the same meaning. The
process statement equivalent to a concurrent signal assignment
statement whose target is a signal name is constructed
as follows:
[..]
[..] If the concurrent signal assignment statement is a guarded
assignment, or if any expression (other than a time
expression) within the concurrent signal assignment statement
references a signal, then the process statement
contains a final wait statement with an explicit sensitivity
clause. The sensitivity clause is constructed by taking
the union of the sets constructed by applying the rule of 8.1 to each
of the aforementioned expressions.
Furthermore, if the concurrent signal assignment statement is a
guarded assignment, then the sensitivity clause
also contains the simple name GUARD. (The signals identified by these
names are called the inputs of the signal
assignment statement.) Otherwise, the process statement contains a
final wait statement that has no explicit
sensitivity clause, condition clause, or timeout clause.
[..]"
If they were clocked, the equivalent processes' respective sensitivity
clauses would have a clock in them: instead the equivalent process for
out_s(1) <= in_s(0);
has in_s(0) in its sensitivity clause (if in_s is a signal)
and the equivalent process for
out_s(3) <= in_s(1);
has in_s(1) in its sensitivity clause.
Regards,
Colin Paul Gloster